爲什麼要繼承

面嚮對象語言的幾大特徵包括抽象、繼承、封裝和多態,對於繼承大家都耳熟能詳,而且也很容易理解,子類可以繼承父類的屬性和方法,然而大家是否在程序中真正去用,或者真正理解了爲什麼要繼承,通過面試發現都是背概念。今天想通過一個例子去說明爲什麼要繼承,目的是希望大家能在平時開發中將繼承的思想貫穿在coding當中,讓軟件的可重用性大大提升。

先給出一個父類Car.java,這個類說明了發動車的幾個步驟。

public class Car {
	public void execute() {
		fire();
		gear();
		push();
	}
	
	public void fire() {
		System.out.println("begin to fire the car......");
	}
	
	public void gear() {
		System.out.println("begin to engage the D gear......");
	}
	
	public void push() {
		System.out.println("begin to push the car......");
	}
}

上面的類給出的是自動檔的車發動的步驟,如果現在有手動檔的車,它沒有D檔,怎麼辦呢?這個時候可以增加一個子類繼承Car,子類在繼承的同時,需要對掛檔的方法進行重寫,手動檔的車需要掛一檔起步。看ManualCar.java:

public class ManualCar extends Car {

	public ManualCar() {
		this.execute();	
	}
	
	public void gear() {
		System.out.println("begin to engage the ONE gear......");
	}

}

好了,寫個測試方法來看看效果吧,看看手動檔的車能否發動起來了。

public class Test {
    /**
     * @param args
     */
    public static void main(String[] args) {
    	Car car = new ManualCar();
    }
}

沒錯,它確實跑起來了。

begin to fire the car......
begin to engage the ONE gear......
begin to push the car......

總結說來,繼承讓代碼實現共享,提高代碼的重用性,子類可以形似父類,也可異於父類,讓代碼的可擴展性提高,框架中的擴展接口都是通過繼承父類實現的,產品或者項目的開發性通過繼承得到提高。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章