物件導向基礎

2021-05-24 07:29:40 字數 3367 閱讀 6870

什麼是物件導向程式設計?就是把萬事萬物都抽象成為物件,一切都是物件!

什麼是抽象?抽象是從眾多的事物中抽取出共同的、本質性的特徵,而捨棄其非本質的特徵。例如蘋果、香蕉、生梨、桃子等,它們共同的特性就是水果。得出水果概念的過程,就是乙個抽象的過程。要抽象,就必須進行比較,沒有比較就無法找到在本質上共同的部分。

什麼是物件?物件是乙個自包含的整體,用一組可識別的特徵和行為來標識。

人是物件,蘋果是物件,貓是物件,鳥是物件,總之一切都是物件!物件有屬性(域)和行為(方法)。比如人有名字,身高,體重等屬性,有吃,喝,玩,思考等行為。

那怎樣建立物件呢?用類來建立。

類是具有相同的屬性和功能的物件的抽象的集合。用

class

表示。物件導向程式設計很簡單,就是定義很多類,然後用類生成物件,並使他們互相通訊以完成需要的功能。

class person

}有時候我們要初始化類,就必須用到構造方法,構造方法名與類名相同,無返回值。所有類都有構造方法,他是用來初始化類的,上面的類就隱含了乙個構造方法:

public person

(){}

我們可以添上他。如果我們沒有定義構造方法,系統預設提供乙個無引數的構造方法。如果我們定義了,系統不再定義。可以定義多個構造方法,這叫方法過載(方法名相同,但是引數型別或個數不同)。

class person

public person

(string name){}

string name;//

人都有名字

int age;//

人都有年齡

public void think()}

物件導向的核心思想是抽象,類是對物件的抽象;抽象類是對類的抽象;介面是對行為的抽象。物件導向有三大特徵:封裝,繼承,多型。

物件導向三大原則之一:封裝

什麼是封裝?每個物件都包含它能進行操作所需要的全部資訊,這個特性稱為封裝。因此物件不必依賴其他物件來完成自己的操作。

封裝的好處:

1,良好的封裝能減少類與類之間的耦合

什麼是耦合呢?就是類與類之間的關係密切程度。就是藕斷絲連,兩個類關係越密切,耦合性越高,我們稱為強耦合;反之為弱耦合。我們要儘量減少類之間的耦合性,為什麼呢?因為兩個類關係越密切,我們越難閱讀,理解他,從而更難修改,維護他。

我們要為互動物件之間的松耦合設計而努力!如此我們便容易理解,進而擴充套件維護他們。

2,類內部的實現可以自由的更改

public

屬性,其他類也引用了他們,你改了他們其他類也同樣修改了,這樣有時很麻煩。但如果封裝的好,只有本類用,我們可以自由更改它,而不用顧忌他引起了其他變化。

3,類具有清晰的對外介面

其他類可以通過本類提供的

public

方法(對外介面)與本類進行通訊。

封裝的實現形式:

1,類的封裝

能不用public

修飾符就不用。

2,屬性的封裝

所有屬性原則上都要用

private

修飾(考慮到測試等原因可以提高端別)。可提供

get,

set方法設定訪問恩,但是

get可以提供,

set如果沒有必要則不提供。

3,方法的封裝

首選private

,其次protected

,default

,盡量避免用

public

。物件導向三大原則之二:繼承

物件的繼承代表了一種「

isa」關係(是)。比如貓是一種動物,

catis a animal

,則表明貓類繼承動物類,貓是子類,動物是父類。記住三句話:

1.子類擁有父類非

private

的屬性和行為(方法)。(

private

表示只能在本類使用)

2.子類具有自己的屬性和行為,即子類可以擴充套件父類沒有的屬性和行為。

3.子類還可以以自己的方式實現父類的功能(方法重寫)

繼承可以減少重複**。程式設計中我們應該儘量減少重複冗餘的**,不能來說

ctrl+c

再ctrl+v

的,這是最初級的程式設計師的做法。而且重複**越多,越難閱讀,越難修改和維護。我們要構建簡潔,精煉,封裝良好的模組。

繼承的好處:使得所有子類公共的部分都放在了父類裡,使得**共享,避免了重複。另外使得修改或擴充套件都較為容易。

壞處:父類變,子類不得不變。繼承破壞了封裝,子類和父類強耦合,父類的實現細節暴漏給了子類。

什麼時候使用:當兩個類之間具備「

isa」關係的時候,就可以考慮用繼承了。

如:貓是一種動物,玫瑰是一種花。。。

物件導向三大原則之三:多型

多型表示 是允許將父物件設定成為和乙個或多個它的子物件相等的技術。

1.子類以父類的身份出現

兒子代表老子

2.子類在工作時以自己的方式進行

3.子類以父類的身份出現時,子類特有的屬性和方法不可以使用。

實現多型必須有:繼承,重寫,子類引用指向父類。

father instance = new son()

;//instance

不能呼叫

son類獨有的屬性方法。

抽象類1.

抽象類不能例項化

2.抽象方法必須被子類重寫

3.包含抽象方法的類必然是抽象類

4.抽象類應該擁有盡可能多的共同**,以及盡可能少的資料(屬性)。

5.抽象類是用來繼承的!具體類不是用來繼承的。

介面1.

介面是把隱式公共方法和屬性組合起來,以封裝特定功能的乙個集合。

2.介面的方法沒有實現。

inte***ce itest 3.

乙個類可以實現多個介面。

class a implemensi1

,i2{}

抽象類和介面的區別

1.類是對物件的抽象;抽象類是對類的抽象;介面是對行為的抽象。

介面是對類的區域性(行為)進行抽象,不針對屬性。抽象類是對類整體的抽象(屬性和行為)。他們的共性就是抽象!

2.如果行為跨越不同類的物件,可以使用介面;而對於一些相似的類物件,用繼承抽象類。如人類,鳥類,動物類都可以行走,我們可以定義乙個介面

iwalk

實現乙個行走的方法,從而人類,鳥類,動物類實現(

implemens

)iwalk

,從而擁有走的功能。蘋果,桔子,西瓜有很多相同的屬性和行為,我們可以定義乙個水果的抽象父類。

3.從設計角度講,抽象類是從子類中發現了公共的東西(蘋果,桔子都是水果,都可以吃),泛化出父類,然後子類繼承父類;而介面是根本不知道父類的存在,方法如何實現還不確定,預先定義。

我們先寫了幾個類,突然發現他們有很多共同的屬性和方法,我們於是重構一下,定義乙個抽象父類,然後讓他們繼承父類。

·通過重構改善現有**的設計!

物件導向基礎

我想在這個園子裡面的新人,還是 掌門人 都對 物件導向 這幾字非常的耳熟了或者有一定的了解。但當乙個初學都在學習物件導向的時候,會遇到一些瓶頸和麻煩,認為物件導向非常的難以理解。那麼本章節主要是讓大家了解物件導向,並系統地掌握物件導向程式設計的技能點,消除初學者的疑惑.1 如何去學習物件導向的程式設...

物件導向基礎

uml是一種標準的圖形化建模語言,是物件導向分析與設計的一種標準表示 類圖是用來描述類以及類與類之間關係的一種uml圖 類圖描述的關係包括關聯,範化,依賴,實現等 只要類與類之間存在關聯關係就可以用普通關聯來表示 比如 描述人和計算之間的關係 帶 的一端表示關聯的發起方,箭頭表示關聯的方向 0.1 ...

物件導向基礎

面向過程 舉例 假如你是公司內一名員工,今天又個任務需要在公司組裝一批電腦,那你就需要採購 討價還價 運輸回公司 開始組裝 佈線網路 除錯機器 完成。也就是說,面向過程就是具體化的實現,細節明確。物件導向 假如你是公司總裁,你布置給一名員工組裝一批電腦的任務。完畢。也就是。物件導向就是抽象化的執行,...