Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有一种方法可以在Java中调用父级的父级_Java_Inheritance_Theory - Fatal编程技术网

有没有一种方法可以在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的验证,这将破坏继承安全性/规则