Java开发之道
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

细节21 信息隐蔽——封装

封装是面向对象编程的基本特征之一,通过封装可以将对象的属性和行为隐藏起来,也就是说通过封装可以隐藏对象的具体实现细节,当需要实现某一功能时,用户只需要知道通过类的实例调用哪个方法来实现就可以了,不必关心这个方法的具体实现。

编程准则:深刻理解封装的含义

比如商场里销售的皮鞋,客户不需要知道皮鞋的生产流程,皮鞋生产流程对客户来说是隐藏的,也就是被封装起来了,客户只需要了解皮鞋的款式、颜色、质量、尺寸和价格等信息。这就好比在程序设计中,用户只需要知道类的某个方法具有什么样的功能、当需要时调用哪个方法就行了,而不必关心方法的具体实现细节。

使用类封装对象的属性和行为的效果如图5.17所示。

图5.17 使用类封装对象的属性和行为

示例:

    public class Circle {
      public float computeArea (float r) {
          if (r <= 0) {                  // 判断半径是否小于等于0
            JOptionPane. showMessageDialog (null, "请输入大于零的半径。");
            return 0;                    // 半径小于等于0时,返回0
          }
          return r * r * 3.14f;          // 返回求出的圆面积
      }
    }

上面的示例创建了一个表示圆形的类Circle,该类中定义了一个求圆面积的方法computeArea (),该方法有一个表示圆半径的形参r,调用该方法时,为其传递一个表示半径的实参值,就可以求出圆的面积了。

计算半径是10的圆面积:

    Circle circle = new Circle ();                      // 创建Circle类的实例
    float area = circle. computeArea (10);               // 计算半径是10的圆面积
    System. out. println ("圆的面积是:" + area);         // 输出圆的面积

说明

上面的代码首先创建Circle 类的实例,其引用是circle,然后通过该引用调用computeArea ()方法,并为其传递一个表示圆半径的实参值10,这样就计算出了圆的面积,用户不需要关心computeArea ()方法是怎么实现的,这就是封装的好处,用户只需要关心如何使用该方法即可。