Java 为什么要小心使用;“受保护”;
在《核心JavaⅠ》一书中,它说Java 为什么要小心使用;“受保护”;,java,protected,Java,Protected,在《核心JavaⅠ》一书中,它说 受保护的关键字应小心使用。如果您使用受保护的字段设置了一个类,那么,如果您想更改它,您必须通知使用该类的所有程序员 我不明白。如果子扩展父,并且父已更改,子未受影响。是这样吗 我不明白。如果子扩展父,并且父已更改,子未受影响。是这样吗 简单的回答是:不,一般情况下 假设您有两个在源代码版本1中描述的类: 版本1 现在,让我们更改父项的受保护字段asdf 版本2 现在还必须更改子类,因此它肯定会影响子类 图书馆 让我们考虑一个图书馆,我们假设你使用了很多。假设您从
受保护的
关键字应小心使用。如果您使用受保护的
字段设置了一个类,那么,如果您想更改它,您必须通知使用该类的所有程序员
我不明白。如果子扩展父
,并且父
已更改,子
未受影响。是这样吗
我不明白。如果子扩展父
,并且父
已更改,子
未受影响。是这样吗
简单的回答是:不,一般情况下
假设您有两个在源代码版本1中描述的类:
版本1
现在,让我们更改父项的受保护字段asdf
版本2
现在还必须更改子类,因此它肯定会影响子类
图书馆
让我们考虑一个图书馆,我们假设你使用了很多。假设您从核心库类派生了20个类。随着库的下一次更新,您的20个类也可能需要更改。这是因为受保护破坏了封装
进一步阅读
有几个很好的资源描述了关于这个问题的所有漂亮细节,可以在程序员SE网络上找到一个很好的总结。现在,我试图对其进行更多的总结
使用受保护的
倾向于:
另一个很好的参考资料来自罗伯特·C·马丁(化名鲍勃叔叔)。例如:如果父亲有一个保险箱,并把密码给了儿子。儿子可以在不通知父亲的情况下从保险箱取钱,或者通过其他方式。不管是哪种方式,都不能保证儿子从保险箱里拿钱后会把这件事告诉父亲 另一方面,如果儿子总是向父亲要钱,那么父亲可以跟踪支出情况并控制如何花钱 这相当于封装。保持字段私有并公开公共或受保护的方法始终是最佳做法。这样,负责人(声明字段的地方)可以隐藏字段如何修改的详细信息,但可以访问与方法调用方相关的信息
这也屏蔽了未来的变化。例如,假设您有一个名为total的字段。如果您允许直接访问该字段,则无法保证该字段没有被错误修改和引入错误。但是,如果您仅通过方法()授予访问权限,则可以更改计算的执行方式,调用该方法的任何人都不会受到影响,也不会从更改中受益。一个奇怪的说法。需要小心使用的不是关键词,而是继承关系。
class Father { protected int asdf; }
class Son extends Father { int qwer = 2 * asdf; }
class Father { protected int fdsa; }
class Son extends Father { int qwer = 2 * asdf; } // compile error