2016-05-17 66 views
-3

因为我们都知道protected成员在那里继承(对于未来的程序员,而不是那个类的用户)。另一方面,static肯定是给用户的,因为我们不能覆盖它,......或类似的东西。为什么Java中允许保护静态?

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

public class MathUtils { 

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

球员谁downvote我的问题,我将不胜感激,如果你能给我从你的真正野生的做法,你怎么用这种方法允许访问静态成员在另一个包的子类,一个很好的例子?为我提供真实的例子。我不需要太多的代码,只需要几句解释。谢谢。

+2

[公共','默认','保护'和'私人'之间的差异可能的重复](http://stackoverflow.com/questions/215497/difference-among-public-default-protected-and -private) – WPrecht

+0

相关http://stackoverflow.com/questions/24289070/why-we-should-not-use-protected-static-in-java – Tunaki

回答

6

在另一方面,静态的,绝对是用户,因为我们不能忽略它

重载是不是你可以做一个方法的唯一的事。另一个重要的事情是有权访问它。

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

  • 从你的类派生将分享这个会员的全部课程,并
  • 唯一的类的包外,将被授予访问权限这个成员是从你的班级派生出来的班级。

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

相关问题