Java-多态

动态绑定和多态

  • 多态:对于同一个行为(方法),不同的子类对象具有不同的表现形式(方法重写)。
  • 动态绑定是指在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际的类型调用其对应的方法。
  • 条件:1)继承,2)重写,3)父类引用指向子类对象
package TestPolymoph;

class Animal {
  private String name;
  Animal(String name) {this.name = name;}

  public void enjoy(){
    System.out.println("叫声.....");
  }

}

class Cat extends Animal {
  private String eyesColor;
  Cat(String n,String c) {
      super(n);
      eyesColor = c;
  }

  public void enjoy() {
    System.out.println("猫叫声......");
  }

  //public void enjoy();
}

class Dog extends Animal {
  private String furColor;
  Dog(String n,String c) {
      super(n);
      furColor = c;
  }
 
  public void enjoy() {
      System.out.println("狗叫声......");
  }
}
/*
class Bird extends Animal {
	 Bird() {
	 	 super("bird");
	 }
	 public void enjoy() {
	     System.out.println("鸟叫声......");
  }
}
*/
class Lady {
    private String name;
    private Animal pet;
    Lady(String name,Animal pet) {
        this.name = name;
        this.pet = pet;
    }
    public void myPetEnjoy(){pet.enjoy();}
}

public class Test {
    public static void main(String args[]){
        Cat c = new Cat("catname","blue");
        Dog d = new Dog("dogname","black");
        //Bird b = new Bird();
        Lady l1 = new Lady("l1",c);
        Lady l2 = new Lady("l2",d);
        //Lady l3 = new Lady("l3",b);
        l1.myPetEnjoy();//判断所引用对象的实际类型,根据其实际的类型调用其对应的方法。
        l2.myPetEnjoy();
        //l3.myPetEnjoy();
    }
}

你可能感兴趣的:(Java,java,开发语言)