多態I

//動態綁定是指在執行期間(而非編譯期間)判斷所引用對象的實際類型,根據其實際類型調用其相應的方法。

public class Test {
 public static void main(String args[]) {
  Cat c = new Cat("catname", "blue");
  Dog d = new Dog("dogname", "black");
  Lady lady1=new Lady("l1", c);
  Lady lady2=new Lady("l2", d);
  lady1.myPetEnjoy();
  lady2.myPetEnjoy();
 }
}

class Animal {
 private String name;

 public 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("貓叫聲。。。");
 }
}

class Dog extends Animal {
 private String furColor;

 Dog(String n, String c) {
  super(n);
  this.furColor = c;
 }

 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();
 }
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章