上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 ()方法是怎么实现的,这就是封装的好处,用户只需要关心如何使用该方法即可。