Java允许父类的引用变量来调用它的子类,这个过程是自动完成的(类比于由低精度往高精度转换)
实例:
定义一个父类:Animal,Food;
Animal的子类:Dog,Cat;
Food的子类:Bone,Fish;
一个普通类Master来调用Animal,Food;
这样由Master的对象来调用一系列的类,比较方便
public class Main {
public static void main(String[] args) {
Master master=new Master();
master.food(new Dog(),new Bone());
master.food(new Cat(),new Fish());
}
}
class Master{
public void food(Animal an,Food f){
an.eat();
f.showName();
}
}
class Food {
String name;
public void showName() {
}
}
class Fish extends Food {
public void showName() {
System.out.println("我是鱼");
}
}
class Bone extends Food {
public void showName() {
System.out.println("我是骨头");
}
}
class Animal {
String name;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// 动物会叫
public void cry() {
System.out.println("不知道怎么叫");
}
// 吃东西
public void eat() {
System.out.println("不知道吃什么");
}
}
class Dog extends Animal {
public void cry() {
System.out.println("汪汪叫");
;
}
public void eat() {
System.out.println("爱吃骨头");
}
}
class Cat extends Animal {
public void cry() {
System.out.println("猫在叫");
}
public void eat() {
System.out.println("爱吃鱼");
}
爱吃骨头
我是骨头
爱吃鱼
我是鱼