有没有办法在Java中调用父级的父级

时间:2015-03-27 13:30:28

标签: java inheritance theory

(只是一个理论问题,我没有看到直接的实际用途)

有没有办法做类似的事情:

super.super.someMethod()

在Java?

super.someMethod()

存在,为什么不能调用超类的超类?

(当然你可以创建一个方法:

protected void someSuperMethod(){
    super.someMethod();
}

在超级类中并在具有相同效果的子类中调用它,但有没有直接的方法,如果没有,为什么?)

S上。

1 个答案:

答案 0 :(得分:0)

有一些丑陋的解决方法,但不应该使用它们,因为这是不好的做法。

当你从一个对象继承时,它很好,但你不应该直接访问这个对象的父对象,因为改变它的行为也可能改变你的第一个父对象的行为。

你提出的解决方法很好,因为它是一个在父本身中定义的方法,因此它不会改变行为,因为父访问它自己的父本身而不是访问它的子进程,父进程首先绕过它父节点。

这主要是为什么没有直接这样做的原因。如果你想访问祖父母中的某些东西,那么它应该在第一个父母中完成,而在你的孩子中你告诉父母将父母访问它。

假设您定义了A,B和C类型的Object。

  • B延伸A,C延伸B.
  • A和B都采用相同的方法,并进行不同的验证。
  • 由于C扩展了B,因此调用该方法应该使用B的验证,而不是A。
  • 使用super.super,您可以直接调用A中的方法,并跳过B的验证,这将破坏继承安全性/规则。