为啥Java中允许受保护的静态? [关闭]
Posted
技术标签:
【中文标题】为啥Java中允许受保护的静态? [关闭]【英文标题】:Why protected static is allowed in Java? [closed]为什么Java中允许受保护的静态? [关闭] 【发布时间】:2016-09-13 23:55:46 【问题描述】:众所周知,protected
成员用于继承(对于未来的程序员,而不是该类的用户)。另一方面,static
绝对是供用户使用的,因为我们无法覆盖它,...或类似的东西。
那么为什么他们决定允许这个旧的编译时错误呢? :
public class MathUtils
protected static max(int a, int b)
return a > b ? a : b;
那些不赞成我的问题的人,如果你能从你的真实实践中给我一个很好的例子,我将不胜感激,你是如何使用这种方法来允许访问另一个包的子类中的静态成员的?给我一个真实的例子。我不需要太多代码,只需要几句解释。谢谢。
【问题讨论】:
Difference among 'public', 'default', 'protected', and 'private'的可能重复 相关***.com/questions/24289070/… 【参考方案1】:另一方面,静态绝对是为用户准备的,因为我们不能覆盖它
重写并不是你可以对方法做的唯一事情。另一个重要的事情是可以访问它。
当你声明一个成员 protected static
时,它会告诉编译器两件事:
当您需要在所有派生类之间共享逻辑或状态时,这很有用,但要保护相同的逻辑不被您的类的用户不扩展它。
【讨论】:
以上是关于为啥Java中允许受保护的静态? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我会得到带有受保护静态成员的 C2248(不可访问成员)?
请解释为啥在 Cpp、Java 和 C# 中允许或不允许 List<A> 强制转换为 List<A.super> [关闭]