Java 入門基礎 物件導向的特徵

2021-06-23 01:36:34 字數 2492 閱讀 3309

計算機軟體系統是現實生活中的業務在計算機中的對映,而現實生活中的業務其實就是乙個個物件協作的過程。物件導向程式設計就是按現實業務一樣的方式將程式**按乙個個物件進行組織和編寫,讓計算機系統能夠識別和理解用物件方式組織和編寫的程式**,這樣就可以把現實生活中的業務物件對映到計算機系統中。

物件導向的程式語言有封裝、繼承 、抽象、多型等4

個主要的特徵。

封裝:封裝是

保證軟體部件具有優良的模組性的基礎,封裝

的目標就是要實現軟體部件的「高內聚、低耦合」,

防止程式相互依賴性而帶來的變動影響。

在物件導向的程式語言中,

物件是封裝的最基本單位

,物件導向的封裝比傳統語言的封裝更為清晰、更為有力

。物件導向的封裝就是把描述乙個物件的屬性和行為的**封裝在乙個「模組」中,也就是乙個類中,屬性用變數定義,行為用方法進行定義,方法可以直接訪問同乙個物件中的屬性。通常情況下,

只要記住讓變數和訪問這個變數的方法放在一起,將乙個類中的成員變數全部定義成私有的,只有這個類自己的方法才可以訪問到這些成員變數,這就基本上實現物件的封裝,就很容易找出要分配到這個類上的方法了,就基本上算是會物件導向的程式設計了。把握乙個原則:把對同一事物進行操作的方法和相關的方法放在同乙個類中,把方法和它操作的資料放在同乙個類中。

例如,人要在黑板上畫圓,這一共涉及三個物件:人、黑板、圓,畫圓的方法要分配給哪個物件呢?由於畫圓需要使用到圓心和半徑,圓心和半徑顯然是圓的屬性,如果將它們在類中定義成了私有的成員變數,那麼,畫圓的方法必須分配給圓,它才能訪問到圓心和半徑這兩個屬性,人以後只是呼叫圓的畫圓方法、表示給圓發給訊息而已,畫圓這個方法不應該分配在人這個物件上,

這就是物件導向的封裝性,即將物件封裝成乙個高度自治和相對封閉的個體,物件狀態(屬性)由這個物件自己的行為(方法)來讀取和改變。乙個更便於理解的例子就是,司機將火車剎住了,剎車的動作是分配給司機,還是分配給火車,顯然,應該分配給火車,因為司機自身是不可能有那麼大的力氣將乙個火車給停下來的,只有火車自己才能完成這一動作,火車需要呼叫內部的離合器和剎車片等多個器件協作才能完成剎車這個動作,司機剎車的過程只是給火車發了乙個訊息,通知火車要執行剎車動作而已。

抽象:

抽象就是找出一些事物的相似和共性之處,然後將這些事物歸為乙個類,這個類只考慮這些事物的相似和共性之處,並且會忽略與當前主題和目標無關的那些方面,將注意力集中在與當前目標有關的方面。例如,看到乙隻螞蟻和大象,你能夠想象出它們的相同之處,那就是抽象。抽象包括行為抽象和狀態抽象兩個方面。例如,定義乙個person

類,如下:

class person

人本來是很複雜的事物,有很多方面,但因為當前系統只需要了解人的姓名和年齡,所以上面定義的類中只包含姓名和年齡這兩個屬性,這就是一種抽像,使用抽象可以避免考慮一些與目標無關的細節。我對抽象的理解就是不要用顯微鏡去看乙個事物的所有方面,這樣涉及的內容就太多了,而是要善於劃分問題的邊界,當前系統需要什麼,就只考慮什麼。

繼承:

在定義和實現乙個類的時候,可以在乙個已經存在的類的基礎之上來進行,把這個已經存在的類所定義的內容作為自己的內容,並可以加入若干新的內容,或修改原來的方法使之更適合特殊的需要,這就是繼承。繼承是子類自動共享父類資料和方法的機制,這是類之間的一種關係,提高了軟體的可重用性和可擴充套件性。

多型:

多型是指程式中定義的引用變數所指向的具體型別和通過該引用變數發出的方法呼叫在程式設計時並不確定,而是在程式執行期間才確定,即乙個引用變數倒底會指向哪個類的例項物件,該引用變數發出的方法呼叫到底是哪個類中實現的方法,必須在由程式執行期間才能決定。因為在程式執行時才確定具體的類,這樣,不用修改源程式**,就可以讓引用變數繫結到各種不同的類實現上,從而導致該引用呼叫的具體方法隨之改變,即不修改程式**就可以改變程式執行時所繫結的具體**,讓程式可以選擇多個執行狀態,這就是多型性。多型性增強了軟體的靈活性和擴充套件性。例如,下面**中的userdao

是乙個介面,它定義引用變數

userdao

指向的例項物件由daofactory.getdao()在執行的時候返回,有時候指向的是userjdbcdao

這個實現,有時候指向的是

userhibernatedao

這個實現,這樣,不用修改源**,就可以改變userdao指向的具體類實現,從而導致userdao.insertuser()方法呼叫的具體**也隨之改變,即有時候呼叫的是

userjdbcdao

的insertuser

方法,有時候呼叫的是

userhibernatedao

的insertuser

方法:

userdao userdao = daofactory.getdao();  

userdao.insertuser(user);

比喻:人吃飯,你看到的是左手,還是右手?

java物件導向的特徵

物件 由行為 狀態和唯一標誌組成。一 抽象 抽象是忽略乙個主題中與當前目標無關的方面,把現實世界中的概念轉換為物件,可以是表示資料的vo物件或抽象類,也可以是表示一類行為的介面。有利於從眾多變化的狀態中抽離出不變的東西。有利於使用繼承來構造類的體系,實現多型,使用模板和工廠模式方法來實現對業務過程的...

Java入門之物件導向三大特徵

一 封裝 每個物件包含它能進行操作所需要的所有資訊,這個特性稱為封裝,因此物件不必依賴其他物件來進行自己的操作。將方法 屬性 字段包裝在類中,通過例項化類來生成物件。封裝的好處 1 好的封裝能減少耦合 2 類內部的實現可以自由修改 3 類具有清晰的對外介面 封裝就像建房子,類就是房子,屬性是門窗,欄...

java基礎 java物件導向的三個特徵與含義

屬性的封裝和方法的封裝。屬性定義為私有的,使用set get 好處是 資訊隱藏和模組化,提高安全性。主要作用是對外隱藏內部實現細節,增強程式的安全性。子類可以繼承父類的成員變數和成員方法,提高 的復用性。特性 單一繼承 子類只能繼承父類的非私有成員變數和方法 成員變數的隱藏和方法的覆蓋 當同乙個操作...