有没有一种方法可以在Java中调用父级的父级
(只是一个理论问题,我看不到直接的实际用途) 有没有一种方法可以做到:有没有一种方法可以在Java中调用父级的父级,java,inheritance,theory,Java,Inheritance,Theory,(只是一个理论问题,我看不到直接的实际用途) 有没有一种方法可以做到: super.super.someMethod() 在爪哇 super.someMethod() 存在,为什么不能调用一个超类的超类 (当然,您可以创建一个方法: protected void someSuperMethod(){ super.someMethod(); } 在超类中调用,并在子类中调用,具有相同的效果,但是有没有直接的方法来实现这一点,如果没有,为什么?) 有一些丑陋的解决办法,但不应该使用,因
super.super.someMethod()
在爪哇
super.someMethod()
存在,为什么不能调用一个超类的超类
(当然,您可以创建一个方法:
protected void someSuperMethod(){
super.someMethod();
}
在超类中调用,并在子类中调用,具有相同的效果,但是有没有直接的方法来实现这一点,如果没有,为什么?)
有一些丑陋的解决办法,但不应该使用,因为这是一种不好的做法 当您从对象继承时,这是可以的,但是您不应该能够直接访问此对象的父对象,因为更改它的行为也可能会更改第一个父对象的行为 您建议的解决方法很好,因为它是在父级本身中定义的方法,因此它不会更改行为,因为父级访问它自己的父级本身,而不是子级访问它,父级绕过第一个父级访问它 这就是为什么没有直接的方法来做到这一点。如果您想访问父级中的某个内容,那么应该在第一个父级中执行,而在您的子级中,您告诉父级访问它 假设您定义了一个类型为A、B和C的对象
- B延伸A,C延伸B
- A和B都有相同的方法,但验证不同
- 因为C扩展了B,所以调用方法应该使用B的验证,而不是A
- 使用super.super,您可以直接调用A中的方法并跳过B的验证,这将破坏继承安全性/规则