访问祖先方法和父方法的正确(Java)约定?
从继承链访问祖先和父方法的正确约定是什么?
例如,methodA()
驻留在基祖先类中,methodB()
驻留在父类中。如果我所在的子类/子类扩展了父类(而父类又扩展了祖先/基类),那么访问 methodA()
的正确方法是什么?
显然 super.super.methodA()
是不允许的。
有效的是 super.methodA()
、this.methodA()
以及简单地调用 methodA()
本身。
上述三种情况中哪一种是调用位于祖先类中的 methodA()
的“正确”方法?
What's the proper convention to access ancestor and parent methods from down an inheritance chain?
For example, methodA()
resides in the base ancestor class and methodB()
resides in the parent class. If I'm in a child/subclass that extends parent (which in turn extended the ancestor/base class), what is the proper way to access methodA()
?
Obviously super.super.methodA()
is not allowed.
What does work is super.methodA()
, this.methodA()
and simply calling methodA()
on it's own.
Which of the above three cases is the 'correct' way to call methodA()
that resides in the ancestor class?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果
methodA()
仅在祖父类中定义,并且未在父类或子类中重写,则只需调用methodA() code> 在子类中会正确调用继承的方法。
If
methodA()
is defined only in the grandparent class, and isn't overridden in the parent class or child class, then simply callingmethodA()
in the child class will correctly call the inherited method.不允许访问类的祖父母方法。请参阅 为什么是 super.super.method(); Java 中不允许? 形成更多信息。
Accessing a classes grandparent methods is not allowed. See Why is super.super.method(); not allowed in Java? form more information.