Java 多态示例:动物、猫和狗
Java 多态示例:动物、猫和狗
本示例演示了 Java 中多态的应用,通过定义动物、猫和狗类,并重写'吃'的方法,演示了多态调用方法时的特点。
动物类定义:
public class Animal {
private String name;
private int age;
private String gender;
public Animal(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
public void eat() {
System.out.println(name + ' is eating.');
}
}
猫类定义:
public class Cat extends Animal {
public Cat(String name, int age, String gender) {
super(name, age, gender);
}
@Override
public void eat() {
System.out.println('The cat ' + super.name + ' is eating fish.');
}
public void catchMouse() {
System.out.println('The cat ' + super.name + ' is catching a mouse.');
}
}
狗类定义:
public class Dog extends Animal {
public Dog(String name, int age, String gender) {
super(name, age, gender);
}
@Override
public void eat() {
System.out.println('The dog ' + super.name + ' is eating meat.');
}
public void guardHouse() {
System.out.println('The dog ' + super.name + ' is guarding the house.');
}
}
测试:
public class Test {
public static void main(String[] args) {
Animal animal1 = new Animal('Tom', 2, 'male');
Cat cat1 = new Cat('Kitty', 1, 'female');
Dog dog1 = new Dog('Max', 3, 'male');
animal1.eat();
cat1.eat();
dog1.eat();
System.out.println();
animal1 = cat1;
animal1.eat();
((Cat) animal1).catchMouse();
System.out.println();
animal1 = dog1;
animal1.eat();
((Dog) animal1).guardHouse();
}
}
输出结果:
Tom is eating.
The cat Kitty is eating fish.
The dog Max is eating meat.
The cat Kitty is eating fish.
The cat Kitty is catching a mouse.
The dog Max is eating meat.
The dog Max is guarding the house.
可以看到,通过多态的方式调用方法时,实际上调用的是子类重写后的方法。而当调用子类独有的方法时,需要进行类型转换才能调用。
原文地址: https://www.cveoy.top/t/topic/okv1 著作权归作者所有。请勿转载和采集!