Java 程序中成员函数的可见性
从设计的角度看,注意到“统一建模语言 (UML)”提供三个可见性级别: 公共、 受保护和 专用是非常重要的, 表 1中对这三种可见性进行了说明。对于程序员,知道 Java 编程语言支持这三种可见性并添加了第四种: 缺省是有好处的。 表 1描述了 Java 编程语言支持的每种可见性, 指出了相应的 UML 符号、当声明成员函数时将应用的 Java 关键字、每种可见性含义的描述以及我对有效应用每种可见性的建议。 清单 1描述了如何在 UML 中声明一个成员函数;注意:如何用“+”符号表明可见性。 清单 2 演示了 如何在 Java 代码中声明相同的成员函数;注意:在它的签名中使用关键字 public 。
在 设置方法的可见性时,我的宗旨是尽可能地进行限制。 换句话说,如果方法并不一定要是公共的话,那么使它成为受保护的。 如果它不必是受保护的,那么使它成为专用的。 最后,仅当您要使用缺省可见性时才使用它,并且在应用它的原因不是很明了的情况下, 在方法头文档中记录下应用该可见性的原因。您可能需要参考提示: 编制 Java 成员函数文档。 在该提示中,我们讨论了成员函数文档。
可见性 | UML 符号 | Java 关键字 | 描述 | 推荐用法 |
公共 | + | public | 在任何其它对象或类中的任何其它成员函数都可以调用公共成员函数。 | 当定义该成员函数的类层次结构之外的对象和类必须访问它时。 |
受保护 | # | protected | 受保护的成员函数可以由定义它的类中或其任何子类中的任何成员函数调用。 | 当成员函数提供在类层次结构内而非外部所需要的行为时。 |
专用 | - | private | 专用成员函数只可以由与它在同一类中定义的其它成员函数调用,而在子类中的成员函数不能调用它。 | 当成员函数提供特定于某个类的行为时。 专用成员函数通常是为了封装一个特定行为而再加工(也称为重组)类中其它成员函数的行为结果。 |
缺省 | 无可用符号 | 无关键字,简单地使其为空白 | 成员函数对于同一包中的其它所有类实际上都是公共的,但是对该包外部的类是专用的。 有时,它称为包可见性或友好的可见性。 | 这是一个有趣的功能,但要小心使用。 在构建实现诸如“客户”等具有凝聚力的商业概念的域组件、类集合时,我会用它将访问权限定在仅组件/软件包内的类。 |
清单 1. 在 UML 中声明成员函数的签名
+ hasParkingPrivileges(): boolean |
清单 2. 在 Java 代码中声明简单的成员函数
public boolean hasParkingPrivileges(){return true; }
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/374079/viewspace-130095/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/374079/viewspace-130095/