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

Is there a way to invoke the parent of a parent in Java

(纯理论题,没看到直接的实际用途)

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

super.super.someMethod()

在Java?

super.someMethod()

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

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

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

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

S.

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

当您从 object 继承时没问题,但您不应该能够直接访问此 object 的 parent,因为改变它的行为可能也会改变行为你的第一个 parent.

您提出的解决方法很好,因为它是在 parent 本身中定义的方法,因此它不会改变 parent 访问它自己的行为 parent 本身而不是 child 访问它 grand-parent 首先绕过它 parent.

这主要是为什么没有直接的方法来做到这一点。如果你想访问 grand-parent 中的内容,那么应该在第一个 parent 中完成,而在你的 child 中,你告诉 parent 访问它 parent.

假设您定义了一个 Object 类型 A、B 和 C。

  • B 扩展 A,C 扩展 B。
  • A 和 B 的方法相同,验证方式不同。
  • 由于 C 扩展了 B,调用该方法应该使用 B 的验证,而不是 A。
  • 使用 super.super 您可以直接调用 A 中的方法并跳过 B 的验证,这会破坏继承 security/rule。