1. 程式人生 > >java 面向物件的四大特性

java 面向物件的四大特性

面向物件軟體系統 OOPS的四大主要特徵:
封裝 Encapsulation
繼承 Inheritance
多型 Polymorphism
抽象 Abstraction

封裝 Encapulation

在這裡插入圖片描述

多型 Polymorphism

多型指的是使用相同的介面來應對不同的底層形式的能力。
其實就是多個類繼承或者實現了同一個類或者介面,每個子類中都有實現某一個方法,
Shape shape = new Squre();//其中Shap被Rectangle、Circle等類繼承
shape.area();//那麼shape.area()就可以實現獲得多個形狀的面積

面向物件的程式語言在執行時所實現的多型過程叫做動態繫結。

注:多型是指根據呼叫函式的物件來選擇更具針對性的方法的特性。當沒有抽象類的時候就可以使用多型。

在這裡插入圖片描述

方法過載和多型沒有關係。
靜態多型不是實際意義上的多型。
注意區別方法過載(Overload)和方法覆蓋(Override)。

基於泛型的引數多型性

覆蓋不能用於靜態方法,因為覆蓋依賴於具體的類例項。靜態方法不依賴於具體的例項,所以覆蓋不適用於靜態方法。

繼承Inheritance

實現了軟體複用性。
在這裡插入圖片描述

抽象 Abstraction

只需要開發介面和功能,不需要實現具體的實施細節。

抽象類中可以既包括抽象方法和具體方法,如果一個方法是抽象方法,其所在的類必須被宣告成抽象類。反之不然,如果一個類是抽象類,其中不一定包括抽象方法。

抽象方法不能被例項化,其他類只能擴充套件它。

介面 Interface

一類可以實現多個介面,類不能繼承多個類
在這裡插入圖片描述

介面和抽象類的區別:

  1. 介面中的都是方法的宣告,而且都是抽象方法,抽象類中可以有方法具體的實現(也就是可以不用是抽象的);
  2. 抽象類中可以有靜態方法,介面中不可以(java8 實現了介面中有預設方法以及靜態方法)
  3. 抽象類中有建構函式,介面中沒有;
  4. 抽象類中的變數可以自定義其可見性(public private protected),但是介面中的方法一定都要是public的;
  5. 介面中的變數都是final型的,抽象類中的變數可以是其他型別;
  6. 類是不能實現多重繼承的,抽象類也不例外;介面可以。
  7. 繼承抽象類的子類一定要將其父類的方法均實現,但是介面可以不用。

合成

在新類裡簡單地建立原有類的物件。我們把這種方法叫作“合成”
為進行合成,我們只需在新類裡簡單地置入物件控制代碼即可。

在這裡插入圖片描述