为什么Java中允许使用受保护的静态?

时间:2016-05-17 18:22:23

标签: java oop

我们都知道protected成员继承(对于未来的程序员,而不是那个类的用户)。另一方面,static绝对是用户,因为我们无法覆盖它,......或类似的东西。

那么为什么他们决定在旧的良好的编译时错误中允许这个呢? :

public class MathUtils {

    protected static max(int a, int b) {
         return a > b ? a : b;
    }
}

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

1 个答案:

答案 0 :(得分:6)

  

另一方面,静态绝对是用户,因为我们无法覆盖它

覆盖不是您可以对方法执行的唯一操作。另一个重要的事情是可以访问它。

当您声明成员protected static时,它告诉编译器两件事:

  • 从您的课程派生的所有课程将共享此成员,
  • 您的程序包之外唯一可以授予此成员访问权限的类是派生自您的类的类。

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