Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Java中允许使用受保护的静态?_Java_Oop - Fatal编程技术网

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

为什么Java中允许使用受保护的静态?,java,oop,Java,Oop,我们都知道,为继承而保护的成员(用于未来的程序员,而不是该类的用户)。另一方面,static肯定是针对用户的,因为我们无法覆盖它,……或者类似的东西 那么,为什么他们决定允许在旧的良好编译时错误上使用这种方法呢 public class MathUtils { protected static max(int a, int b) { return a > b ? a : b; } } 对我的问题投反对票的家伙们,如果你们能给我一个真实的野生实践的好例子

我们都知道,
为继承而保护的
成员(用于未来的程序员,而不是该类的用户)。另一方面,
static
肯定是针对用户的,因为我们无法覆盖它,……或者类似的东西

那么,为什么他们决定允许在旧的良好编译时错误上使用这种方法呢

public class MathUtils {

    protected static max(int a, int b) {
         return a > b ? a : b;
    }
}
对我的问题投反对票的家伙们,如果你们能给我一个真实的野生实践的好例子,我将不胜感激,你们是如何使用这种方法来允许访问另一个包的子类中的静态成员的?给我举个真实的例子。我不需要太多的代码,只需要几句解释。谢谢

另一方面,static绝对适合用户,因为我们无法覆盖它

重写不是您可以对方法执行的唯一操作。另一件重要的事情是获得它

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

  • 从您的类派生的所有类都将共享此成员,并且
  • 包之外唯一被授予访问此成员权限的类是从类派生的类
当您需要在所有派生类之间共享逻辑或状态,但要保护同一逻辑不受不扩展该逻辑的类用户的攻击时,此功能非常有用。

相关逻辑的可能重复