JAVA和Nginx 教程大全

网站首页 > 精选教程 正文

java 核心技术-12版 卷Ⅰ- 5.1.10 受保护访问

wys521 2024-11-28 09:00:17 精选教程 22 ℃ 0 评论

原文

5.1.10 受保护访问

大家都知道,最好将类中的字段标记为 private,而方法标记为 public。任何声明为private 的特性都不允许其他类访问。本章最前面已经解释过,这对于子类也同样适用,即子类也不能访问超类的私有字段。

不过,有些时候,你可能希望限制超类中的某个方法只允许子类访问,或者更少见地,可能希望允许子类的方法访问超类的某个字段。在这种情况下,可以将一个类特性(方法或字段)声明为受保护 (protected)。例如,如果将超类 Employee 中的 hireDay字段声明为protected,而不是 private,Manager 方法就可以直接访问这个字段。

?在Java中,受保护字段只能由同一个包中的类访问。现在考虑一个Administrator子类,这个子类在另一个不同的包中。Administrator 类中的方法只能查看 Administrator 对象自己的 hireDay 字段,而不能看其他 Employee 对象的这个字段。有了这个限制,就能避免滥用protected 机制随意地派生子类来访问受保护的字段。

?在实际应用中,要谨慎使用受保护字段。假设你的类要提供给其他程序员使用,而你在设计这个类时设置了一些受保护字段。你不知道的是,其他程序员可能会由这个类派生新类,并开始访问你的受保护字段。在这种情况下,如果你想修改你的类的实现,就势必会影响那些程序员,招致他们的不满。这违背了OOP 提倡数据封装的精神。

?受保护的方法更有意义。如果一个类的某个方法使用很棘手,就可以将它声明为 protected.这表明可以相信子类(可能很熟悉祖先类)能正确地使用这个方法,而其他类则不行。

?这种方法的一个很好的示例就是 Object 类中的 clone 方法,有关的详细内容请参见第 6章

C++注释: 前面已经提到,Java 中的受保护特性允许所有子类以及同一个包中的所有其他类访问。这与C++中受保护的含义稍有不同,Java中的 protected 概念不如 C++中的安全。

下面对 Java 中的4个访问控制修饰符做个小结:

1.仅本类可以访问-private。

2.可由外部访问一public。

3.本包和所有子类可以访问一-protected。

4.本包中可以访问一默认(很遗憾),不需要修饰符

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表