Java面向對象:對象的概念及面向對象的三個基本特徵

面向對象簡稱 OO(Object Oriented),20 世紀 80 年代以後,有了面向對象分析(OOA)、 面向對象設計(OOD)、面向對象程序設計(OOP)等新的系統開發方式模型的研究。

對 Java 語言來說,一切皆是對象。把現實世界中的對象抽象地體現在編程世界中,一個對象代表了某個具體的操作。一個個對象最終組成了完整的程序設計,這些對象可以是獨立存在的,也可以是從別的對象繼承過來的。對象之間通過相互作用傳遞信息,實現程序開發。

對象的概念

Java 是面向對象的編程語言,對象就是面向對象程序設計的核心。所謂對象就是真實世界中的實體,對象與實體是一一對應的,也就是說現實世界中每一個實體都是一個對象,它是一種具體的概念。對象有以下特點:

  • 對象具有屬性和行爲。
  • 對象具有變化的狀態。
  • 對象具有唯一性。
  • 對象都是某個類別的實例。
  •  一切皆爲對象,真實世界中的所有事物都可以視爲對象。


例如,在真實世界的學校裏,會有學生和老師等實體,學生有學號、姓名、所在班級等屬性(數據),學生還有學習、提問、喫飯和走路等操作。學生只是抽象的描述,這個抽象的描述稱爲“類”。在學校裏活動的是學生個體,即張同學、李同學等,這些具體的個體稱爲“對象”,“對象”也稱爲“實例”。

面向對象的三大核心特性

面向對象開發模式更有利於人們開拓思維,在具體的開發過程中便於程序的劃分,方便程序員分工合作,提高開發效率。面向對象程序設計有以下優點。

  1. 可重用性:代碼重複使用,減少代碼量,提高開發效率。下面介紹的面向對象的三大核心特性(繼承、封裝和多態)都圍繞這個核心。
  2. 可擴展性:指新的功能可以很容易地加入到系統中來,便於軟件的修改。
  3. 可管理性:能夠將功能與數據結合,方便管理。


該開發模式之所以使程序設計更加完善和強大,主要是因爲面向對象具有繼承、封裝和多態 3 個核心特性。

繼承性

如同生活中的子女繼承父母擁有的所有財產,程序中的繼承性是指子類擁有父類的全部特徵和行爲,這是類之間的一種關係。Java 只支持單繼承。

例如定義一個語文老師類和數學老師類,如果不採用繼承方式,那麼兩個類中需要定義的屬性和方法如圖 1 所示。
 


圖 1  語文老師類和數學老師類中的屬性和方法


從圖 1 能夠看出,語文老師類和數學老師類中的許多屬性和方法相同,這些相同的屬性和方法可以提取出來放在一個父類中,這個父類用於被語文老師類和數學老師類繼承。當然父類還可以繼承別的類,如圖 2 所示。
 


圖 2  父類繼承示例圖


總結圖 2 的繼承關係,可以用概括的樹形關係來表示,如圖 3 所示。
 


圖 3  類繼承示例圖


從圖 3 中可以看出,學校主要人員是一個大的類別,老師和學生是學校主要人員的兩個子類,而老師又可以分爲語文老師和數學老師兩個子類,學生也可以分爲班長和組長兩個子類。

使用這種層次形的分類方式,是爲了將多個類的通用屬性和方法提取出來,放在它們的父類中,然後只需要在子類中各自定義自己獨有的屬性和方法,並以繼承的形式在父類中獲取它們的通用屬性和方法即可。

提示:C++ 支持多繼承,多繼承就是一個子類可有多個父類。例如,客輪是輪船也是交通工具,客輪的父類是輪船和交通工具。多繼承會引起很多衝突問題,因此現在很多面向對象的語言都不支持多繼承。Java 語言是單繼承的,即只能有一個父類,但 Java 可以實現多個接口(接口類似於類,但接口的成員沒有執行體。詳細瞭解可參考《Java接口》一節),可以防止多繼承所引起的衝突問題。

封裝性

封裝是將代碼及其處理的數據綁定在一起的一種編程機制,該機制保證了程序和數據都不受外部干擾且不被誤用。封裝的目的在於保護信息,使用它的主要優點如下。

  • 保護類中的信息,它可以阻止在外部定義的代碼隨意訪問內部代碼和數據。
  • 隱藏細節信息,一些不需要程序員修改和使用的信息,比如取款機中的鍵盤,用戶只需要知道按哪個鍵實現什麼操作就可以,至於它內部是如何運行的,用戶不需要知道。
  • 有助於建立各個系統之間的松耦合關係,提高系統的獨立性。當一個系統的實現方式發生變化時,只要它的接口不變,就不會影響其他系統的使用。例如 U 盤,不管裏面的存儲方式怎麼改變,只要 U 盤上的 USB 接口不變,就不會影響用戶的正常操作。
  • 提高軟件的複用率,降低成本。每個系統都是一個相對獨立的整體,可以在不同的環境中得到使用。例如,一個 U 盤可以在多臺電腦上使用。


Java 語言的基本封裝單位是類。由於類的用途是封裝複雜性,所以類的內部有隱藏實現複雜性的機制。Java 提供了私有和公有的訪問模式,類的公有接口代表外部的用戶應該知道或可以知道的每件東西,私有的方法數據只能通過該類的成員代碼來訪問,這就可以確保不會發生不希望的事情。

多態性

面向對象的多態性,即“一個接口,多個方法”。多態性體現在父類中定義的屬性和方法被子類繼承後,可以具有不同的屬性或表現方式。多態性允許一個接口被多個同類使用,彌補了單繼承的不足。多態概念可以用樹形關係來表示,如圖 4 所示。
 


圖 4  多態示例圖


從圖 4 中可以看出,老師類中的許多屬性和方法可以被語文老師類和數學老師類同時使用,這樣也不易出錯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章