java 父类和爷爷类都有同名方法如何调用爷爷类的
时间: 2024-03-08 11:49:08 浏览: 27
在 Java 中,可以使用 `super` 关键字加上父类名来调用爷爷类的同名方法。例如:
```java
public class Grandfather {
public void sayHello() {
System.out.println("Hello from Grandfather");
}
}
public class Father extends Grandfather {
@Override
public void sayHello() {
System.out.println("Hello from Father");
}
}
public class Son extends Father {
@Override
public void sayHello() {
// 调用爷爷类的同名方法
super.super.sayHello();
System.out.println("Hello from Son");
}
public static void main(String[] args) {
Son son = new Son();
son.sayHello(); // 输出:Hello from Grandfather Hello from Son
}
}
```
在上面的例子中,`Son` 类继承了 `Father` 类,而 `Father` 类继承了 `Grandfather` 类。`Grandfather` 类和 `Father` 类都有一个名为 `sayHello` 的方法。在 `Son` 类的 `sayHello` 方法中,使用 `super.super.sayHello()` 调用了爷爷类的同名方法。当执行 `son.sayHello()` 时,首先输出的是调用爷爷类的同名方法 `Hello from Grandfather`,然后输出的是子类自己的输出 `Hello from Son`。需要注意的是,`super.super` 只能用于调用父类的父类的方法,不能继续往上调用更高级别的父类方法。