网站首页 > 精选教程 正文
原文
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.本包中可以访问一默认(很遗憾),不需要修饰符
猜你喜欢
- 2024-11-28 java 核心技术-12版 卷Ⅰ- 5.2.3相等测试与继承
- 2024-11-28 java 核心技术-12版 卷Ⅰ- 5.2.4 hashCode方法
- 2024-11-28 Java入门书单
- 2024-11-28 java 核心技术-12版 卷Ⅰ- 4.3.7 隐式参数与显式参数
- 2024-11-28 全网最完整的免费java教程讲义系列(四)——java的流程控制
- 2024-11-28 java 核心技术-12版 卷Ⅰ- 4.6 对象构造 4.6.1重载
- 2024-11-28 java 核心技术-12版 卷Ⅰ- 3.10 数组
- 2024-11-28 java 核心技术-12版 卷Ⅰ- 4.3 自定义类
- 2024-11-28 2019年Java核心技术我整理了200多页pdf,今天分享给你
- 2024-11-28 java 核心技术12版卷1 - 1.3 Java applet 与 Internet
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)