天天看點

Java學習心得10——多态多态類方法的多态

多态

一種類型的變量可以掌管多種類型的對象,這就是多态。

說人話:

直覺了解成多種形态。人類就是多态的,黃種人、白種人、黑種人都是屬于人類,人類這一個類可以表示黃種人、白種人、黑種人這三個類,這不就是多态多種形态嗎?

回到程式設計:

Animal(動物)類型的變量可以有多種形态,它可以管理它的子類Cat、Dog、Fish、Tiger……的對象,也就是說可以這樣寫:

Animal animal1 = new Cat();
Animal animal2 = new Dog();
Animal animal3 = new Fish();
Animal animal4 = new Tiger();
           

類方法的多态

與變量一樣,類的方法也是有多态性的。

舉個例子:

一個Animal類型的變量,如果調用它的.bark()方法,那麼這個方法的實作也是多态性的。

如果這個Animal類型變量實際管理的是Cat對象,那麼我們在使用.bark()時就會調用Cat類的.bark()方法,如果它實際管理的是一個Dog對象,那麼就會調用Dog類的.bark()。(如果Cat或Dog類沒有.bark()方法則調用Animal的.bark()方法)也就是說,根據不同的對象,調用不同的方法。

不妨做個測試,我們将Cat對象交給一個Animal變量,然後使用.bark()方法,看看它究竟使用了Cat的.bark()方法還是Animal的.bark()方法:

Animal類代碼:

package zoom;

public class Animal {
	public void bark() {
		System.out.println("I am Animal");
	}
	public static void main(String[] args) {
		Animal animal = new Cat(); 
		animal.bark();
	}
}
           

Cat類代碼:

package zoom;

public class Cat extends Animal {
	@Override
	public void bark() {
		// TODO Auto-generated method stub
		System.out.println("喵");
	}
}

           

運作結果:

Java學習心得10——多态多态類方法的多态