Java 版 (精华区)

发信人: cameran (竹晨), 信区: Java
标  题: Java 程序中成员函数的可见性
发信站: 哈工大紫丁香 (2001年10月10日09:25:55 星期三), 站内信件

Java 程序中成员函数的可见性  英文原文
 使其有效
Scott W. Ambler
总裁,Ronin International
2000 年 9 月 21 日
Java 成员函数的可见性定义 Java 对象对其进行访问的级别。以我的经验而言,可见性
的选择是一个重要的设计决定,也是一个重要的执行决定,因为它是减少系统内耦合的
一种方法。本周的主题改编自 The Object Primer 2nd Edition 的第 7 章和第 8 章。

从设计的角度看,注意到“统一建模语言 (UML)”提供三个可见性级别:公共、受保护
和专用是非常重要的,表 1 中对这三种可见性进行了说明。对于程序员,知道 Java 编
程语言支持这三种可见性并添加了第四种:缺省是有好处的。表 1 描述了 Java 编程语
言支持的每种可见性,指出了相应的 UML 符号、当声明成员函数时将应用的 Java 关键
字、每种可见性含义的描述以及我对有效应用每种可见性的建议。清单 1 描述了如何在
 UML 中声明一个成员函数;注意:如何用“+”符号表明可见性。清单 2 演示了如何在
 Java 代码中声明相同的成员函数;注意:在它的签名中使用关键字 public。
在设置方法的可见性时,我的宗旨是尽可能地进行限制。换句话说,如果方法并不一定
要是公共的话,那么使它成为受保护的。如果它不必是受保护的,那么使它成为专用的
。最后,仅当您要使用缺省可见性时才使用它,并且在应用它的原因不是很明了的情况
下,在方法头文档中记录下应用该可见性的原因。您可能需要参考提示:编制 Java 成
员函数文档。在该提示中,我们讨论了成员函数文档。
表 1. Java 成员函数的可见性 可见性 UML 符号 Java 关键字 描述 推荐用法
公共 + public 在任何其它对象或类中的任何其它成员函数都可以调用公共成员函数。
 当定义该成员函数的类层次结构之外的对象和类必须访问它时。
受保护 # protected 受保护的成员函数可以由定义它的类中或其任何子类中的任何成员
函数调用。 当成员函数提供在类层次结构内而非外部所需要的行为时。
专用 - private 专用成员函数只可以由与它在同一类中定义的其它成员函数调用,而在
子类中的成员函数不能调用它。  当成员函数提供特定于某个类的行为时。专用成员函
数通常是为了封装一个特定行为而再加工(也称为重组)类中其它成员函数的行为结果

缺省 无可用符号 无关键字,简单地使其为空白 成员函数对于同一包中的其它所有类实
际上都是公共的,但是对该包外部的类是专用的。有时,它称为包可见性或友好的可见
性。 这是一个有趣的功能,但要小心使用。在构建实现诸如“客户”等具有凝聚力的商
业概念的域组件、类集合时,我会用它将访问权限定在仅组件/软件包内的类。
清单 1. 在 UML 中声明成员函数的签名 + hasParkingPrivileges(): boolean
清单 2. 在 Java 代码中声明简单的成员函数 public boolean hasParkingPrivileges
()
{
return true;
}
参考资料
有关成员函数可见性的详细信息,请参阅:
Building Object Applications That Work: Your Step-By-Step Handbook for Devel
oping Robust Systems with Object Technology,Scott W. Ambler 著。New York:C
ambridge University Press,1998。
Process Patterns -- Building Large-Scale Systems Using Object Technology ,S
cott Ambler 著。New York:Cambridge University Press,1998。
The Object Primer 2nd Edition,Scott W. Ambler 著。New York:Cambridge Unive
rsity Press,2000。
The Unified Process Construction Phase,Scott W. Ambler 和 Larry L. Constant
ine 合著。Gilroy,CA:R&D Books,2000。
The Java Language Specification ,James Gosling,Bill Joy 和 Guy Steele 合著
。Reading, MA: Addision-Wesley Longman, Inc., 1996。
The Java FAQ,Jonni Kanerva 著。Reading, MA: Addision-Wesley Longman, Inc., 
1997。
Object-Oriented Software Construction, Second Edition,Bertrand Meyer 著。Up
per Saddle River,NJ:Prentice-Hall PTR,1997。
The Elements of Java Style,Alan Vermeulen、Scott W. Ambler、Greg Bumgardner
、Eldon Metz、Trevor Misfeldt、Jim Shur 和 Patrick Thompson 合著。New York:
Cambridge University Press,2000。

--
欲讯秋情众莫知, 喃喃负手叩东篱。
孤标傲世偕谁隐,一样花开为底迟?
圃露庭霜何寂寞,鸿归蛩病可相思?
休言举世无谈者,解语何妨片语时。

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.239.175]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:3.428毫秒