Java封装(二十五)

面向对象特性

面向对象三大特性:封装、继承、多态

 

封装

1.概念:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问。

例如:一台计算机内部比较复杂,有主板、CPU、硬盘和内存, 而一般用户不需要了解它的内部细节,不需要知道主板的型号、CPU 主频、硬盘和内存的大小,于是计算机制造商用机箱把计算机封装起来,对外提供了一些接口。如鼠标、键盘和显示器等,这样使用计算机就非常方便。

2.优点:

  a.只能通过规定的方法访问数据

  b.隐藏类的实例细节,方便修改和实现

3.封装的实现步骤

  a.修改属性的可见性来限制对属性的访问,一般设为 private。

  b.为每个属性创建一对赋值(setter)方法和取值(getter)方法,一般设为 public,用于属性的读写。

  c.在赋值和取值方法中,加入属性控制语句(对属性值的合法性进行判断)。

 

例如:

运行结果:

public class Employee {
    private String name;
    private int age;
    private String phone;
    private String address;
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name=name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        //对年龄进行限制
        if (age<18||age>40) {
            System.out.println("年龄必须在18到40之间!");
            this.age=20;//默认年龄
        } else {
            this.age=age;
        }
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone=phone;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address=address;
    }
}

上述代码中,使用 private 关键字修饰属性,这就意味着除了 Employee 类本身外,其他任何类都不可以访问这些属性。但是,可以通过这些属性的 setXxx() 方法来对其进行赋值,通过 getXxx() 方法来访问这些属性

在 age 属性的 setAge() 方法中,首先对用户传递过来的参数 age 进行判断,如果 age 的值不在 18 到 40 之间,则将 Employee 类的 age 属性值设置为 20,否则为传递过来的参数值。

编写测试类 EmployeeTest,在该类的 main() 方法中调用 Employee 属性的 setXxx() 方法对其相应的属性进行赋值,并调用 getXxx() 方法访问属性。代码如下:

运行结果:

通过封装,实现了对属性的数据访问限制,满足了年龄的条件。在属性的赋值方法中可以对属性进行限制操作,从而给类中的属性赋予合理的值, 并通过取值方法获取类中属性的值(也可以直接调用类中的属性名称来获取属性值)。

 

posted @ 2020-03-30 17:32  梦清欢  阅读(142)  评论(0编辑  收藏  举报