java——多態

java中的多態體現在一個變量可以引用多個不同類對象,但前提是這些不同的類必須有相同的父類。從而該變量可以且只能調用每個不同對象之間的公共操作集(方法)

在java中,父類變量可以引用子類對象,即Person p = new Chinese();

但是變量p只能調用共同的成員屬性和方法。當子類中已經覆蓋繼承的方法時,父類的變量調用的將是子類中已重寫(Overriding)的方法,重寫Overriding是父類與子類之間多態性的一種表現。

代碼:


public class Dog {
	private String getName(){
		return "Dog";
	}
	
	public String bark(){
		return "wang-wang";
	}
	
	public void call(){
		System.out.println("It's "+getName()+" "+bark());
	}
}


public class MiniDog extends Dog{
	private String getName(){
		return "Mini";
	}
	
	public String bark(){
		return "woo-woo";
	}
}


public class Test {
	public static void main(String args[]) {
		Dog d = new MiniDog();
		d.call();
		MiniDog md = new MiniDog();
		md.call();
	}
}

=======================================================================================

運行結果是:

It's Dog woo-woo
It's Dog woo-woo

解釋:

(1)d調用的是自己的call()方法和getName()方法,因爲bark()被重寫覆蓋所以調用的是子類的。注意:getName()方法沒有被重寫,因爲是父類私有的,對子類來說是不可見的,被隱藏起來。

(2)第二個名字還是Dog是因爲子類沒有實現call()方法,用的是父類的call(),在call()裏調用的還是父類的getName()。



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