java 面向物件的四大特性
阿新 • • 發佈:2018-12-09
面向物件軟體系統 OOPS的四大主要特徵:
封裝 Encapsulation
繼承 Inheritance
多型 Polymorphism
抽象 Abstraction
封裝 Encapulation
多型 Polymorphism
多型指的是使用相同的介面來應對不同的底層形式的能力。
其實就是多個類繼承或者實現了同一個類或者介面,每個子類中都有實現某一個方法,
Shape shape = new Squre();//其中Shap被Rectangle、Circle等類繼承
shape.area();//那麼shape.area()就可以實現獲得多個形狀的面積
面向物件的程式語言在執行時所實現的多型過程叫做動態繫結。
注:多型是指根據呼叫函式的物件來選擇更具針對性的方法的特性。當沒有抽象類的時候就可以使用多型。
方法過載和多型沒有關係。
靜態多型不是實際意義上的多型。
注意區別方法過載(Overload)和方法覆蓋(Override)。
基於泛型的引數多型性
覆蓋不能用於靜態方法,因為覆蓋依賴於具體的類例項。靜態方法不依賴於具體的例項,所以覆蓋不適用於靜態方法。
繼承Inheritance
實現了軟體複用性。
抽象 Abstraction
只需要開發介面和功能,不需要實現具體的實施細節。
抽象類中可以既包括抽象方法和具體方法,如果一個方法是抽象方法,其所在的類必須被宣告成抽象類。反之不然,如果一個類是抽象類,其中不一定包括抽象方法。
抽象方法不能被例項化,其他類只能擴充套件它。
介面 Interface
一類可以實現多個介面,類不能繼承多個類
介面和抽象類的區別:
- 介面中的都是方法的宣告,而且都是抽象方法,抽象類中可以有方法具體的實現(也就是可以不用是抽象的);
- 抽象類中可以有靜態方法,介面中不可以(java8 實現了介面中有預設方法以及靜態方法)
- 抽象類中有建構函式,介面中沒有;
- 抽象類中的變數可以自定義其可見性(public private protected),但是介面中的方法一定都要是public的;
- 介面中的變數都是final型的,抽象類中的變數可以是其他型別;
- 類是不能實現多重繼承的,抽象類也不例外;介面可以。
- 繼承抽象類的子類一定要將其父類的方法均實現,但是介面可以不用。
合成
在新類裡簡單地建立原有類的物件。我們把這種方法叫作“合成”
為進行合成,我們只需在新類裡簡單地置入物件控制代碼即可。