|
|
1
11
如果该字段是私有的,并且通过getter和setter进行访问,那么您将能够重新实现getter和setter(例如,删除该字段并从外部源更新/读取值),从而在不涉及任何子类的情况下更改“字段”的工作方式。 这是否值得,这取决于你。 |
|
|
2
9
将受保护的方法视为 界面 对于子类,就像公共方法是其他所有人的接口一样。 提供访问器使基类能够维护其状态:如果没有故意的欺骗,子类是不可能损坏它的。 |
|
|
3
3
更少的访问不是缺点,而是好处。类应该总是尽可能多地限制对其内部状态的访问。不要想为什么内部应该隐藏,而是想为什么应该暴露。在这种情况下,就像在所有情况下一样,除非有充分的理由公开变量,否则不要公开它。 |
|
|
4
1
如果你不需要你的孩子 直接地 访问它,你为什么让他们访问? 使用protected并不是不好的一面。但如果没有必要,也许最好避免它,并控制对字段的访问。 |
|
|
5
1
在Java中,除了任何扩展类之外,同一个包中的所有成员都可以访问受保护的成员。将字段设置为私有将防止同一包中的类直接访问它。 还有一点是亚历克斯早些时候提出的。 |
|
|
6
0
如果有人对您的类进行子类化,并将该子类与您当前的类放在同一个包中,他们可能希望覆盖您的getter和setter。例如,他们想确保
除此之外,这真的取决于你。传统的做法是,每件事都有成功者和成功者。 |
|
|
7
0
信息隐藏是有价值的,即使在继承相关的类中也是如此。 除允许重新实施外,如alex所述:
|
|
|
8
0
您想要使用getter/setter,因为使用
您希望禁止字段重写,因为它与方法重写的工作方式不同。字段重写不会使被重写的字段不可访问(引用的类型决定您使用的字段实例)。 可访问字段应该是final或在final类中。
乍一看,这看起来只是让代码难以阅读,但它对功能有影响。假设字段确实被派生类覆盖,因为没有使用setter,所以无法自动更新基本字段,也无法检测是否有人更改了基本字段(因为基本值仍然可以访问)并更新派生字段。很容易想象基态和派生态可能会不同步,错误将难以追踪。简单地说,它是一个非常脆弱的API。
不幸的是,自从第一次世界大战以来,没有办法防止这种情况发生
就我个人而言,我很惊讶语言设计者竟然允许字段重写。使用setter的优点是,每个级别都可以保证其自身状态的完整性,并相信派生类没有破坏它。字段重写只是自找麻烦。 |
|
|
user1682076 · 声纳错误-使此成员“受保护” 9 年前 |
|
|
Scratch Cat · 使用继承的受保护成员时出现问题(C++) 9 年前 |
|
|
gwizardry · 私有静态列表是限制类实例集的适当方法吗 9 年前 |
|
|
Kiel · 铁路超高访问背后的变量代码 9 年前 |
|
|
tyhenry · c++初始值设定项列表问题-错误:试图引用已删除的函数 10 年前 |
|
|
Abu Muhammad · 为什么此受保护的成员在子类[重复]中不可见 11 年前 |
|
|
user1868607 · 从超类调用受Ruby保护的可见性 11 年前 |
|
|
PeakGen · 访问子类中的“受保护”数据时出现“标识符未定义”错误 13 年前 |