2017-09-03 25 views
0

如果B类扩展A,则A的公共和受保护的变量由B继承,而私有变量不是。但公共和受保护的变量可以被同一包中的其他类直接访问。在Java中,如何创建只对类和子类可见的变量,以及包中没有其他类的变量?

如何让这些继承变量为私有?

+2

的可能的复制[为什么会出现在Java中没有子类的可见性修饰符?](https://stackoverflow.com/questions/5300163/why-is-there-no-sub-class-visibility-modifier-in -java) – DPM

+0

如果你想疯了,在一个静态代码分析器中使用一个自定义注释和一个自定义规则,然后将它与你的构建工具一起使用,并且只要有一个这样的package-but-sub-sub方法调用就会失败一个注释的方法。 – DPM

回答

3

你不能。 Java的访问修饰符没有足够的表现力。

可以防止在同一个包从其他类访问的唯一方法是让空洞地真实:在同一个包中没有其他类。

+0

我真的很难理解。首先根据Java的方式,你应该让所有的领域都是私有的。但是,如果你想继承一个领域,它不应该是私人的。那么我将如何让继承的字段是私人的?为什么我不被允许? – arandomguy

0

不知道它是否适合在这里,因为没有足够的细节,但如果想只给特定的方法访问,您可以创建一个公开,你想要什么,有你谈到了实现它的类接口。

相关问题