classAnimal{publicvoid eat(){
System.out.println("Animal eat food.");
}
}
classCatextendsAnimal{publicvoid eat(){
System.out.println("Cat like eating fish");
}
publicvoid catCatch(){
System.out.println("Cat like Catching mice.");
}
}
classDogextendsAnimal{publicvoid eat(){
System.out.println("Dog like eating bones.");
}
publicvoid guard(){
System.out.println("Dog guards the door.");
}
}
classPolymorphismDemo3{publicstaticvoid main(String[] args) {
Animal c1 = new Cat();//when cat is an animal
c1.eat();
System.out.println();
Cat c2 = (Cat)c1;//Downcasting. back to a cat
c2.eat();
c2.catCatch();
System.out.println();
System.out.println();
Animal d1 = new Dog();//when dog is an animal
d1.eat();
System.out.println();
Dog d2 = (Dog)d1;//Downcasting. back to a dog
d2.eat();
d2.guard();
}
}
/*
running result:
Cat like eating fish
Cat like eating fish
Cat like Catching mice.
Dog like eating bones.
Dog like eating bones.
Dog guards the door.
*/
案例2(老师和学生):
classPerson{publicvoid eat(){}
}
classSouthPersonextendsPerson{publicvoid eat(){
System.out.println("South person eat rice.");
}
publicvoid custom(){
System.out.println("South person like business.");
}
}
classNorthPersonextendsPerson{publicvoid eat(){
System.out.println("North person eat noodles.");
}
publicvoid custom(){
System.out.println("North person like academic research.");
}
}
classpolymorphismDemo4{publicstaticvoid main(String[] args) {
Person p = new SouthPerson();
p.eat();
System.out.println();
SouthPerson sp = (SouthPerson)p;
sp.eat();
sp.custom();
System.out.println();
System.out.println();
p = new NorthPerson();
p.eat();
System.out.println();
NorthPerson np = (NorthPerson)p;
np.eat();
np.custom();
}
}
/*
running result:
South person eat rice.
South person eat rice.
South person like business.
North person eat noodles.
North person eat noodles.
North person like academic research.
*/