博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java从零开始学十三(封装)
阅读量:5025 次
发布时间:2019-06-12

本文共 2386 字,大约阅读时间需要 7 分钟。

一、什么是封装,为什么要封装

对面向对象而言:封装就是将方法和属性包装到一个程序单元中,并且这个单元以类的形式实现。

简单讲:封闭就是将属性私有化,提供公有方法来访问私有属性

封装的作用:

  • 封装反映和事物的相对独立性,封装在编程中的作用就是:使对象以外的部分不能随意更改对象的属性,从而有效避免了外部错误操作对此对象的影响
  • 提高松耦合性,代码重用性

松耦合:把对象想象成一个电池,这个电池不仅可以在相机中使用,也可以在遥控器,吹风机和剃须发等中使用, 我们说电池的松耦合性是非常好,而实现如此好的松耦合的前提就是对象有很好的封装性

二、封装的实现

  1. 属性私有化private
  2. 设置get/set方法
  3. 对属性设置必要的限制
package com.pb.demo3;public class Person {    private String name; //姓名    private String sex;    //性别    private int age;//年龄    //设置getter和setter方法    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getSex() {        return sex;    }    public void setSex(String sex) {        if(sex.equals("男") || sex.equals("女")){            //设置性别限制,不合法的值将提示错误        this.sex = sex;        }else{            System.out.println("性别不合法,性别只能是:男或者女");        }    }    public int getAge() {        return age;    }    public void setAge(int age) {        if(age>0 && age<=150){            //设置年龄限制        this.age = age;        }else{            System.out.println("年龄只能在1-150岁之间");        }    }    public Person() {        }    public Person(String name, String sex, int age) {        this.name = name;        this.sex = sex;        this.age = age;    }        public void say(){        System.out.println("自我介绍:");        System.out.println("姓名:"+this.name);        System.out.println("性别:"+this.sex);        System.out.println("年龄:"+this.age);    }}

测试类:

package com.pb.demo3;public class PersonTest {    public static void main(String[] args) {        Person person=new Person();        person.setName("韩冰");        //传入不合法的值        person.setSex("中性");        //传入不合法的值        person.setAge(200);        //调用普通方法输出        person.say();    }}

结果:将提示错误

性别不合法,性别只能是:男或者女

年龄只能在1-150岁之间
自我介绍:
姓名:韩冰
性别:null
年龄:0

从结果可以看出,不合法的值,将为该数据类型的初始值String 为null,int 为0

也可以在构造方法中为值进行初始化,这样,设置值为不合法时,就会使用初始化的值

public Person() {        this.name = "无名氏";        this.sex = "男";        this.age = 22;    }

再执行错误的值传入时

package com.pb.demo3;public class PersonTest {    public static void main(String[] args) {        Person person=new Person();        person.setName("韩冰");        //传入不合法的值        person.setSex("中性");        //传入不合法的值        person.setAge(200);        //调用普通方法输出        person.say();    }}

结果:

性别不合法,性别只能是:男或者女

年龄只能在1-150岁之间
自我介绍:
姓名:韩冰
性别:男
年龄:22

 

转载于:https://www.cnblogs.com/liunanjava/p/4295154.html

你可能感兴趣的文章
PHP表单(get,post)提交方式
查看>>
使用vbs或者bat脚本修改IE浏览器安全级别和选项
查看>>
Silverlight入门
查看>>
Silverlight动态调用WEBSERVICE,WCF方法
查看>>
LeetCode 895. Maximum Frequency Stack
查看>>
模仿segmentfault 评论
查看>>
一个简单的日志函数C++
查看>>
Java 8 中如何优雅的处理集合
查看>>
IOS程序的启动过程
查看>>
连接Linux下 XAMPP集成环境中部署的禅道的数据库MariaDB
查看>>
Java操作Excel和Word
查看>>
Oracle 体系结构之ORACLE物理结构
查看>>
ORA-12538: TNS: no such protocol adapter
查看>>
盒子模型
查看>>
局域网协议
查看>>
[HNOI2012]永无乡 线段树合并
查看>>
Spring整合hibernate:3、使用XML进行声明式的事务管理
查看>>
SqlServer之Convert 函数应用格式化日期(转)
查看>>
软件测试领域中的10个生存和发展技巧
查看>>
Camera前后摄像头同时预览
查看>>