Android系统下Java编程详解
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 信息的封装和隐藏

2.3.1 知识准备:信息的封装

封装指的是将对象的状态信息(属性)和行为(方法)捆绑为一个逻辑单元的机制。

Java中通过将数据封装声明为私有的(private),再提供一个或多个公开的(public)方法实现对该属性的操作,以实现下述目的:

□ 隐藏一个类的属性和实现细节,仅对外公开接口,控制在程序中属性的可读和修改的访问级别。

□ 增强安全性,防止对封装数据的未经授权的访问。使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作。

□ 有利于保证数据的完整性。

□ 便于修改,增强代码的可维护性。

□ 实现封装的关键是不要让方法直接访问其他类的属性,程序应该只能通过指定的方法与对象交互数据。封装赋予对象“黑盒”特性,这是实现重用性和可靠性的关键。

2.3.2 知识准备:信息的隐藏

如果允许用户对属性直接访问,可能会引起一些不必要的问题,如声明了一个Group类表示一个程序开发小组,由属性number来记录小组成员数。如果允许程序随意给number属性赋值,将值设置为1000,虽然这在语法上没有问题,但是,我们知道一个程序小组不可能有这么多的编程人员。如果在程序的其他部分用到了这个number属性,可能出现问题。因此,应该将属性定义为私有的(private),只有类本身才可以访问这个属性,外部程序或者其他类不能访问它。可以定义一些public或Default方法来访问这些属性,在方法中加入一些逻辑判断的方法来操作属性。将number的属性值设置为2~100之间,小于2人时计做两人,大于100人时计做100人。示例如下:

源文件:Group.java

    public class Group {
    private int number;
    public void setNumber(int s_number) {
        if (s_number > 100) {
        this.number         = 100;
        } else if (s_number< 2) {
        this.number         = 2;
        } else {
        this.number         = s_number;
        }
    }
    }