能给出具体代码和注释吗
时间: 2024-09-07 08:02:49 浏览: 33
当然可以。以下是一个简单的Java示例代码,展示如何实现方法重写(Override),这是一种多态性的体现:
```java
// 定义一个抽象类,包含一个抽象方法
abstract class Animal {
// 抽象方法,子类必须实现它
public abstract void makeSound();
}
// 继承Animal类,实现抽象方法
class Dog extends Animal {
// 实现父类的抽象方法
public void makeSound() {
System.out.println("汪汪汪");
}
}
// 再次继承Animal类,实现抽象方法
class Cat extends Animal {
// 实现父类的抽象方法,但有不同的实现
public void makeSound() {
System.out.println("喵喵喵");
}
}
public class Main {
// 主方法
public static void main(String[] args) {
Animal myDog = new Dog(); // 创建Dog对象,向上转型为Animal
Animal myCat = new Cat(); // 创建Cat对象,向上转型为Animal
// 调用makeSound方法,根据实际类型执行对应的方法,展示多态性
myDog.makeSound(); // 输出: 汪汪汪
myCat.makeSound(); // 输出: 喵喵喵
}
}
```
在这段代码中,Animal类是一个抽象类,它定义了一个抽象方法makeSound()。Dog和Cat两个类继承自Animal类,并分别实现了makeSound()方法。在主方法中,通过向上转型(将子类对象赋值给父类类型的引用),我们创建了Animal类型的引用指向Dog和Cat的对象,并调用了makeSound()方法。根据实际对象的类型,执行了对应类中定义的makeSound()方法。
阅读全文