有没有办法在 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。
(纯理论题,没看到直接的实际用途)
有没有办法做类似的事情:
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。