黑馬程式設計師 繼承

2022-09-10 15:15:27 字數 1572 閱讀 4650

一.繼承概述

繼承是 oc 語法中, 非常重要的乙個特性.這個概念與我們在實際生活當中的"繼承"不完全一樣,所一不能完全和生活中作比較. 比如,我們父母有房子,他們過世後,我們就會繼承這個房子.但是在oc 中並不一樣.如果非要拿這個例子來做正確的解釋應該是:

我們自己擁有了乙個房子,在剛剛擁有這個房子的時候,這個房子的布局分割,尺寸,每個物品的擺放等等全部和父母房子相同,但是這個時候我們房子中是看不見這些東西的(不用在子類中寫父類中已經有的**).

但是,一旦我們想要把這個房子中的東西(之前存在的),進行一些美化操作時候,比如把椅子刷成紅色,那麼這個時候,這個椅子就要在我們房子**現了,因為我們要實實在在拿到這個父母房子中的椅子,才可以真正的進行刷成紅色的操作.我們在剛剛擁有的時候,我們說父母的房子裡的東西都是我們,但是只是說說而已,一旦進行修改,那麼就必須拿到父母房子中的那個真實存在的東西,進行修改. 這裡說的比繁瑣,簡單的用**來解釋"繼承"這個詞,比如我們有 a,b 兩個類,  類繼承了a類,我們在 a 類中先前已經建立乙個屬性叫做 name,那麼  類直接就可以列印出 b.name 這 個屬性. 這個時候其實 a 中的 name 已經存在於b 中了,只不過沒有寫在b 的檔案中,如果 b 再建立乙個叫做 name 的屬性的話,就會提示報錯,重複建立. 這個就是我們開始說的"只是說說"而已. 當我們有需要,需要對 name 的 setter 方法進行重寫的時候,就需要在 b 中實實在在寫出 -setname: 這個方法,進行操作.這就是我後邊提到的"必須拿到父母房子中的那個真實存在的東西,進行修改".

更深一點體會,我們在 b 類中寫-setname 的時候,會出現智慧型提示.這也側面說明了我們之前的論證我們直接下邊來看**例子:

二.**繼承例項:

person 類,和 student 類

學生是人,那麼也就是 student 類繼承了 person 類

person 類,如下:

student 類,如下:

此時我們, student 類已經重寫person 類中的 talk 方法.這時候,我們建立student物件,執行 talk 方法 ,列印出的是 "student----跑"而不是"person----跑".

當然,我們student 類中,不重寫 talk 方法,如下邊這樣:

我們建立student物件,執行 talk 方法 ,列印出的是"person----跑". 因為這裡我們 student 沒有對 person 中的 talk 進行重寫

到這裡是不是對繼承有一點點認識了呢

三.繼承的好處

(1)  二者具有相同的屬性和行為,在編寫**過程中,會出現重複**,影響效率。

(2)建立了類與類之間的關係

(3)子類可以擁有父類中的所有成員變數和方法

(4)子類可以在不改變父類的基礎上,拓展成員變數和方法

三. 繼承的注意點

(1)基本上所有類的基類是nsobject。

(2)父類必須寫在子類前面。

(3)不允許子類和父類擁有相同名稱的成員變數。

(4)子類方法和屬性的訪問過程:如果子類沒有,就去父類中尋找。

(5)父類被繼承了並不影響父類的使用,還是能照常使用。

四.繼承的缺點

耦合性太強,類的關聯太強.

黑馬程式設計師 繼承

asp.net android io開發s net培訓 期待與您交流!c 的繼承與 c 等語言乙個重要的不同,就是只能從乙個類中繼承,這是開發者在權衡了從多個類c 繼承的優勢與劣勢作出的結果。不過,可以從介面繼承。另外,繼承可傳遞。建構函式和析構函式不能被繼承。c 繼承中的重寫 1 virtual ...

黑馬程式設計師 繼承

乙個類宣告的基類說明中只能有乙個單獨的類,單繼承性 雖然類只能直接繼承乙個基類,但繼承的層次沒有限制 隱藏基類的成員 1.宣告乙個新的相同型別的成員,並使用相同的名稱 不包括返回型別 2.要讓編譯器知道你在故意隱藏繼承的成員,使用 new修飾符 基類訪問 可以使用基類訪問表示式訪問隱藏的基類成員 基...

黑馬程式設計師 繼承

黑馬程式設計師 繼承 一 黑馬程式設計師 繼承1基本使用 import animal的宣告 inte ce animal nsobject void setage int age int age void setweigth double weight double weight end anima...