Java孙子对象不允许调用父或祖父母的方法

时间:2012-12-17 19:32:10

标签: java inheritance polymorphism

我在Java中有一个类AA有一些受保护的方法,然后我有一个B的{​​{1}}来自extends,所以A可以覆盖这些受保护的方法。然后,我希望能够有一个B课程,C来自课程extends但课程B应该无法调用C' s保护方法。有没有在Java中做到这一点?我只是让父母的班级方法覆盖并让他们最终?胃内

A

3 个答案:

答案 0 :(得分:3)

不,您无法阻止子类调用父级的protected方法。要实现此目的,您必须降低方法的可见性,这是​​不允许的。在类final中创建方法B只意味着它不能在任何子类中被覆盖。

您希望禁止对子类调用protected方法这一事实对我来说似乎是一个设计问题。您可能想要查看整个类层次结构,并且可能更好地隔离类的reponsibilites,这样您就不会遇到必须阻止通常允许的情况(调用protected方法)。 / p>

答案 1 :(得分:1)

//How do I make some variable final or not accessible to my children?

为此,您可以创建变量私有最终

private final int COUNT = 100;

私人访问者会阻止子类访问您的变量COUNT。

答案 2 :(得分:1)

如果B覆盖受保护的方法以阻止C访问A中实现的方法就足够了.C只能访问B中实现的方法。看看Java How to call method of grand parents?