JAVA多态继承案例代码解析
时间: 2023-07-03 15:20:11 浏览: 64
下面是一个Java多态继承的案例代码,代码注释中会对其进行解析:
```
// 父类Animal
class Animal {
public void makeSound() {
System.out.println("Animal is making a sound");
}
}
// 子类Dog,继承自Animal
class Dog extends Animal {
@Override
public void makeSound() {
System.out.println("Dog is barking");
}
}
// 子类Cat,继承自Animal
class Cat extends Animal {
@Override
public void makeSound() {
System.out.println("Cat is meowing");
}
}
// 测试类
public class Main {
public static void main(String[] args) {
// 创建Animal、Dog、Cat对象
Animal animal = new Animal();
Dog dog = new Dog();
Cat cat = new Cat();
// 调用各自的makeSound方法
animal.makeSound(); // 输出:Animal is making a sound
dog.makeSound(); // 输出:Dog is barking
cat.makeSound(); // 输出:Cat is meowing
// 使用父类引用指向子类对象
Animal a = new Dog();
a.makeSound(); // 输出:Dog is barking
a = new Cat();
a.makeSound(); // 输出:Cat is meowing
}
}
```
在这个案例中,Animal是父类,Dog和Cat是子类。Animal类中有一个makeSound方法,而子类Dog和Cat分别重写了这个方法。
在测试类中,我们分别创建了Animal、Dog、Cat对象,并调用各自的makeSound方法。此时输出结果分别对应各自的实现。
接着我们使用父类引用指向子类对象,即Animal a = new Dog() 和 Animal a = new Cat()。这里体现了多态的特性,即父类引用可以指向子类对象。
当调用a.makeSound()时,由于a是Animal类型的引用,所以会调用Animal类中的makeSound方法。但是由于a指向的实际上是Dog或Cat的对象,所以最终输出对应的结果,即Dog is barking和Cat is meowing。
这就是Java多态继承的一个简单案例。