如果一个子类的父类之上还有一个父类的话,那么super调用的是哪个父类
时间: 2024-10-08 11:18:20 浏览: 29
当一个子类继承自另一个父类时,如果这个子类还有另一个上层父类(也即超祖类),`super` 关键字用来引用当前子类所属的那个直接父类,而不是更上层的父类。因此,在这种情况下,`super` 调用的就是子类自身定义的那个父类,不会向上追溯到更远的祖先类。
例如:
```java
class Grandparent {
void grandparentMethod() {
System.out.println("Grandparent method");
}
}
class Parent extends Grandparent {
void parentMethod() {
super.grandparentMethod(); // 调用的是Parent的直接父类Grandparent的方法
System.out.println("Parent method");
}
}
class Child extends Parent {
void childMethod() {
super.parentMethod(); // 调用的是Child的直接父类Parent的方法
System.out.println("Child method");
}
}
```
在这个例子中,`Child` 的 `childMethod` 中的 `super.parentMethod()` 将调用 `Parent` 类中的 `parentMethod()`,而非 `Grandparent` 类的方法。
阅读全文