轉載自 面向對象的三大特性
封裝、繼承、多態
封裝和繼承的作用都是爲了代碼重用,多態是爲了接口重用。
封裝
封裝是把客觀事物抽象成類,並且把自己的屬性和方法讓可信的類或對象操作,對不可信的隱藏。
繼承
繼承可以使某個類使用現有類的所有功能,並且無需重新編寫原來的類的情況下對這些功能進行擴展。
- 繼承得到的新類稱爲“子類”或“派生類”。被繼承的父類稱爲“基類”、“父類”或“超類”。
- 繼承的過程是一個從一般到特殊的過程。
- 繼承概念的實現方式有兩類:實現繼承與接口繼承。實現繼承是指直接使用基類的屬性和方法而無需額外編碼的能力;接口繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現的能力;
Java訪問權限:
繼承與接口與抽象類
- 接口可以繼承接口,但用extends 而不是implement。
- 接口不能繼承抽象類,抽象類可以實現(implement)接口。原因是接口的實現和抽象類的繼承都要重寫父類的抽象方法。而接口裏只能有抽象方法,抽象類裏則允許有抽象方法和非抽象方法。
- 抽象類可以繼承實體類。
多態
多態性允許你將父對象設置成爲和一個或更多的其他子對象相等的技術,賦值之後,父對象就可以根據當前賦值給它的子對象的特性以不同的方式運作。這意味着雖然針對不同對象的具體操作不同,但通過一個公共的類,它們(那些操作)可以通過相同的方式予以調用。
//父類
public class Base {
protected void show() {}
}
//子類
class Kid extends Base {
public void show() {
System.out.println(" i am kid");
}
}
public static void main( String[] args )
{
Kid kid = new Kid();
Base base = kid;
base.show();
}
運行結果:
實現多態,有二種方式,覆蓋,重載。
覆蓋,是指子類重新定義父類的虛函數的做法。
重載,是指允許存在多個同名函數,而這些函數的參數表不同(或許參數個數不同,或許參數類型不同,或許兩者都不同)。