【问题标题】: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;
    }
}

那些不赞成我的问题的人,如果你能从你的真实实践中给我一个很好的例子,我将不胜感激,你是如何使用这种方法来允许访问另一个包的子类中的静态成员的?给我一个真实的例子。我不需要太多代码,只需要几句解释。谢谢。

【问题讨论】:

标签: java oop


【解决方案1】:

另一方面,静态绝对是为用户准备的,因为我们不能覆盖它

重写并不是你可以对方法做的唯一事情。另一个重要的事情是可以访问它。

当你声明一个成员 protected static 时,它会告诉编译器两件事:

  • 从您的班级派生的所有班级都将共享此成员,并且
  • 您的包之外唯一可以访问此成员的类是从您的类派生的类。

当您需要在所有派生类之间共享逻辑或状态时,这很有用,但要保护相同的逻辑不被您的类的用户不扩展它。

【讨论】:

    猜你喜欢
    • 2013-05-30
    • 2011-04-09
    • 2013-10-01
    • 2023-04-09
    • 2016-03-08
    • 2012-01-17
    • 2017-09-14
    • 2019-07-16
    相关资源
    最近更新 更多