Java物件導向的基本特徵

2021-07-09 17:53:41 字數 2564 閱讀 9141

1.抽象:

抽象就是忽略乙個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。

抽象包括兩個方面,一是過程抽象,二是資料抽象。

過程抽象:忽略任務具體完成的過程,只精確描述該任務所要完成的功能

資料抽象:利用數學結構(如集合、關係、函式、序列等)進行功能性描述,而不關心這些抽象數學結構在計算機中是如何具體表示和實現的

用更加形象的話來說:

資料抽象就是針對物件的屬性,比如建立乙個鳥這樣的類,鳥會有以下特徵,兩個翅膀,兩支腳,有羽毛等等特性,寫成類都是鳥的屬性

過程抽象就是針對物件的行為特徵,比如鳥會飛,會跳等等,這些方面的就會抽象為方法,即過程,寫成類都是鳥的方法

2.繼承:

繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用,它提供了一種明確表述共性的方法。物件的乙個新類可以從現有的類中派生,這個過程稱為類繼承。新類繼承了原始類的特性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。派生類可以從它的基類那裡繼承方法和例項變數,並且類可以修改或增加新的方法使之更適合特殊的需要。

3.封裝:

封裝是把過程和資料報圍起來,對資料的訪問只能通過已定義的介面。物件導向計算始於這個基本概念,即現實世界可以被描繪成一系列完全自治、封裝的物件,這些物件通過乙個受保護的介面訪問其他物件。

4. 多型性:

多型性是指允許不同類的物件對同一訊息作出響應。多型性包括引數化多型性和包含多型性。多型性語言具有靈活、抽象、行為共享、**共享的優勢,很好的解決了應用程式函式同名問題。

其中對多型性更進步一的理解:

1.物件導向的三大特性:封裝、繼承、多型。從一定角度來看,封裝和繼承幾乎都是為多型 而準備的。

2.多型的定義:指允許不同類的物件對同一訊息作出響應。即同一訊息可以根據傳送物件的不同而採用多種不同

的行為方式。

3.實現多型的技術成為:動態繫結(dynamic binding ),是指在執行期間判斷所引用物件的實際型別,根據其實際的型別

呼叫其相應的方法。

在這之前,先理解父類引用執指向子類物件

要理解多型性,首先要知道什麼事「向上轉型」。

我定義了乙個子類cat  ,它繼承了animal類,那麼後者是前者的父類。我可以通過cat c=new cat();例項化乙個cat物件,這個不難理解

但當我這樣定義時,animal a=new cat();

表示定義了乙個animal型別的引用,指向新建的cat型別的物件。由於cat是繼承自它的父類animal,所以animal型別引用是

可以指向cat型別的物件的。

那麼這樣做有什麼意義呢?因為子類是父類的乙個改進和擴充,所以一般子類在功能上交父類更強大,屬性較父類更獨特,

定義乙個父類型別的引用指向乙個子類物件既可以使用子類強大的功能,又可以抽取父類的共性。

所以,父類型別的引用可以呼叫父類中定義的所有屬性和方法,而對於子類中定義而父類中沒有的方法,他是無可奈何的;

同時,父類中乙個方法只有在父類中定義而在子類中沒有重寫的情況下,才可以被父類型別的引用呼叫;對於父類中定義的方法,

如果子類重寫了該方法,那麼父類型別的引用將會呼叫子類中這個方法,這就是動態鏈結。也可以叫動態繫結。

動態繫結是指在執行期間判斷所引用物件的實際型別,根據實際的型別呼叫其相應的方法。

對於多型,可以總結它為:

一、使用父類型別的引用指向子類的物件;

二、該引用只能呼叫父類中定義的方法和變數;

三、如果子類中重寫了父類中的乙個方法,那麼在呼叫子類中的這個方法;

四、變數不能被重寫(覆蓋),重寫的概念只針對方法,如果在子類中重寫了父類中的變數,那麼在編譯時會報錯。

多型的概念

多型==遲繫結

不要把函式過載理解為多型。

因為多型是一種執行時的行為,不是編譯期的行為。

多型:父型別的引用可以指向子型別的物件。

比如: parent  p=new child();

當使用多型方式呼叫方法時,首先檢查父類中是否有該方法,如果沒有,則編譯錯誤;

如果有,再去呼叫子類的該同名方法。(注意此處,靜態static方法屬於特殊情況,靜態方法只能繼承,不能重寫,

如果子類中定義了同名同形式的靜態方法,它對父類方法只起到隱藏的作用。呼叫的時候用誰的引用,則呼叫誰的版本)

如果想要呼叫子類中有而父類中沒有的方法,需要進行強制型別轉換,如上面的例子中,將p轉換為子類child型別的引用。

因為當用父類的引用指向子類的物件,用父類引用呼叫方法時,找不到父類中不存在的方法。這時候需要進行向下的型別轉換,將

父類引用轉換為子類引用。

**如下:

物件導向基本特徵

通過學習設計模式對物件導向程式設計有了更深層次的了解。在 大話設計模式 一書中的第乙個設計模式裡 簡單工廠模式 體會到了自己學習物件導向程式設計時的歷程。首先要保證 無錯,我想這是大部分初學者的心願。其次就是 規範,這一點是很重要的,程式不僅僅是寫給自己看的,更需要讓別人能看懂。別人能看懂還不行,畢...

物件導向基本特徵

物件導向4大基本特徵 抽象 封裝 繼承 多型。抽象。將一些事物的共性抽離出來歸為乙個類。如對於動物,具有生命體徵 活動能力等區別於其它事物的共同特徵 封裝。有選擇地隱藏和暴露資料和方法。比如有u盤這個類,我希望隱藏內部組成和實現,只暴露usb介面以供使用 繼承。子類可以直接使用父類的部分資料和方法,...

物件導向的三個基本特徵 物件導向基本特徵

物件導向的三個基本特徵 封裝是物件和類概念的主要特徵,就是把客觀的封裝起來,只對外暴露出來,並把自己的資料和方法只讓可信的類或物件操作作用 隱藏實現細節,使得 模組化 使用現有類的所有功能,並且無需重新編寫原來的類中的方法對這些功能的擴充套件,oc只能實現單繼承,如果想要實現多繼承的話可以通過分類或...