【发布时间】:2018-07-01 08:07:27
【问题描述】:
当我尝试从具有受保护访问级别的抽象类访问和覆盖继承的抽象函数时,
protected <ReturnDataType> <FunctionName>() {
删除受保护的访问类型后,Eclipse 会抛出此错误
不能从
通过为其提供受保护的访问类型的快速修复来解决。
我知道,对于这个被覆盖的函数,我也可以将访问类型设置为 Public。
现在,我的问题是:我将这个功能设为 Public 有什么风险/问题?
【问题讨论】:
-
我不确定其中的“风险”数字。我认为这只是您是否希望系统中的任何其他方法能够访问您的方法,或者您是否只想允许从您的类继承的类进行访问。这完全取决于您。
-
很难对风险进行一般性评估。这取决于您的应用程序的架构以及您需要/想要公开的内容。一般来说,您希望将公共成员保持在最低限度。任何公共方法都可以很容易地以您从未想过的方式使用,可能会暴露不应该暴露的数据,并增加系统上可能的攻击向量。除此之外,我不确定如何评估您的特定应用的风险。
-
您可以在著名的 Effective Java 书籍第 15 条:最小化类和成员的可访问性中找到对该问题的最佳解释。
标签: java inheritance public protected