//多态存在的条件
//1.要有继承
//2.要有重写
//3.父类引用指向子类对象
package v39;
public class Test {
public static void main(String[] args){
Cat c = new Cat("catname","blue");
Dog d = new Dog("dogname","black");
Lady l1 = new Lady("l1",c);
Lady l2 = new Lady("l2",d);
l1.myPetEnjoy();//调用Cat的方法,方法存在code segment中
l2.myPetEnjoy();
//调用Dog
的方法,方法存在code segment中
}
}
class Lady{
private String name;
private Animal pet;
Lady(String name, Animal pet){
this.name = name;
this.pet = pet;
}
public void myPetEnjoy(){
pet.enjoy();
}
}
class Animal{
public String name;
Animal(String name){
this.name = name;
}
public void enjoy(){
System.out.println("叫声。。。");
}
}
class Bird extends Animal{
private String featherColor;
Bird(String n, String f){
super(n);
featherColor = f;
}
public void enjoy(){
System.out.println("鸟叫声。。。");
}
}
class Cat extends Animal{
public String eyeColor;
Cat(String name, String eyeColor){
super(name);
this.eyeColor = eyeColor;
}
public void enjoy(){
System.out.println("猫叫声喵。。。");
}
}
class Dog extends Animal{
public String furColor;
Dog(String name, String furColor){
super(name);
this.furColor = furColor;
}
public void enjoy(){
System.out.println("狗叫声。。。");
}
}