面嚮對象語言的幾大特徵包括抽象、繼承、封裝和多態,對於繼承大家都耳熟能詳,而且也很容易理解,子類可以繼承父類的屬性和方法,然而大家是否在程序中真正去用,或者真正理解了爲什麼要繼承,通過面試發現都是背概念。今天想通過一個例子去說明爲什麼要繼承,目的是希望大家能在平時開發中將繼承的思想貫穿在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......
總結說來,繼承讓代碼實現共享,提高代碼的重用性,子類可以形似父類,也可異於父類,讓代碼的可擴展性提高,框架中的擴展接口都是通過繼承父類實現的,產品或者項目的開發性通過繼承得到提高。