1. 程式人生 > >多型之向上轉型和向下轉型

多型之向上轉型和向下轉型

向上轉型:

        將子類物件轉換為父類物件 : Father f = new Son(); 這樣產生的物件f,將會擁有父類的屬性和子類的方法。當然,子類的方法複寫了父類的方法,輸出的結果自然是父類的。而f的屬性卻依舊是父類時候的屬性值。舉個栗子:

              

class Base{
	public String bname = "父類";
	public String sname;
	public void method() {
		System.out.println("父類方法");
	}
	public void test() {
		
	}
}

class Sub extends Base{
	public String sname = "子類";
	public void method() {
		System.out.println("重寫方法");
	}
	public void test() {
		System.out.println("子類方法");
	}
}

public class 向上繼承 {
        public static void main(String[] args) {
			Base b = new Sub();
			System.out.println(b.bname);
			System.out.println(b.sname);
			b.method();
			b.test();
		}
結果:          父類
                    null
                    重寫方法

                    子類方法


將Base b = new Sub()更改為Sub b = new Sub()

結果:          父類
                    子類
                    重寫方法
                    子類方法

子類物件將子類中重寫父類的內容全部更改,未改的繼承父類。

但是,向上轉型的代價是:犧牲了那些子類有而父類沒有的方法。


  向上轉型的優點:減少重複程式碼編寫工作量。

  舉個栗子:         填寫一個英語四六級表格:同一個學校同一個班級的學生,除了(姓名、學號、身份證號)不同外,(學校名、專業、報考地點等等等)很多資訊一樣,那向上轉型就是將一樣的資訊列印好,就不需要一個個填寫了。


向下轉型:

 完全為了轉型而轉型。。。