首页 > 学院 > 开发设计 > 正文

Java从零开始学十三(封装)

2019-11-14 23:02:11
字体:
来源:转载
供稿:网友
java从零开始学十三(封装)一、什么是封装,为什么要封装

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

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

封装的作用:

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

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

二、封装的实现
  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


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表