繼承
1、oc是單一繼承
2、封裝:隱藏內部(.m檔案)實現 穩定外部(.h檔案)介面。
屬性封裝了例項變數;
方法封裝了具體實現;
類封裝了方法和屬性;
封裝的好處:使用更加簡單,變數更加安全,可以隱藏內部實現細節,開發速度快 。
3、私有變數-private,私有方法 在.m中實現,在.h中沒有宣告,私有成員變數只能在類的內部使用;
受保護的-protect
公開的-public
4、繼承特性
讓子類繼承父類的非私有的屬性和方法(因為oc中沒有真正意義上的私有方法,因此子類會繼承父類所有的方法),繼承協議的話,這個協議是要寫在類裡面的,也就是說該協議不能寫在單獨的.h檔案中。,
單根性:乙個子類只能有乙個父類
傳遞性:如果a是b的子類,b是c的子類,那麼a具c的所有特性
5、例項變數賦值使用-> ,屬性賦值使用.
student1->name=@"小明"; //例項變數賦值
student2.name=@"小紅"; //屬性賦值
小結:子類繼承過來的方法可以直接使用,也可以重寫。但是重寫之後,子類方法會覆蓋父類中的方法,在呼叫子類中的方法時以子類方法為主。
多型1、多型允許在同乙個類中定義同一訊息介面(oc中沒有操作性多型);
有關多型
正常;
子類指標指向父類開闢的記憶體空間,它實質上是乙個父類物件;
乙個父類指標指向了子類開闢的記憶體空間,它實質上是乙個子類物件;
小結:主要看是誰alloc了,誰alloc了那麼這個物件就是誰的型別;
id型別
id是把開闢記憶體空間的時間推遲到遇到alloc時才分配記憶體
id資料型別
萬能型別匹配符
沒有*號;
動態資料型別;
可以指向任何類的物件(設定是nil),而不關心其具體型別
在執行時檢查其具體型別
可以對其傳送任何(存在)訊息
優點:id型別較靈活
可以向任何物件傳送已經存在的訊息
在編碼階段不報任何警告
缺點:id型別變數,可讀性不高;
無法在編碼階段發現語法錯誤;
在例項變數前面可以加 private,public,protected關鍵字,但在方法前面不能加這些修飾符
@private,繼承的也不能用
@protected,子類和本類都能使用某些屬性,變數。
@public,
過載(overload)就是在類中可以建立多個方法,它們具有相同的名字,但引數的個數和引數的型別不同。呼叫方法時通過傳遞給它們的不同引數個數和引數型別來決定具體使用哪個方法, 這就是多型性。
確切的說oc中是沒有過載的(
因為冒號是方法中的一部分,這樣就認為方法是不同命的了),它的過載叫做操作性多型(在乙個類裡面,)
重寫是父類與子類之間的多型性,對父類的函式進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和引數,我們說該方法被重寫 (overriding)。
在oc中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類並不想原封不
動地繼承父類的方法,而是想作一定的修改,這就需要採用方法的重寫。方法重寫又稱方法覆蓋。
若子類中的方法與父類中的某一方法具有相同的方法名、返回型別和參數列,
則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,該關鍵
字引用了當前類的父類。
多型, 就是站在抽象的層面上去實施乙個統一的行為,到個體(具體)的層面上時, 這個統一的行為會因為個體(具體)的形態特徵而實施自己的特徵行為
.pch:預編譯檔案
.plist:
單例傳值
**傳值
通知傳值
blocks
傳值oc中可能存在物件初始化不成功的現象。
python 20200317封裝 繼承 多型
展開python 中的 self 相當於c 中的this指標。init self init方法 構建方法,當你在初始化乙個物件時 這個方法就會在物件被建立時 自動呼叫 class ball def init self,name attention self.name name def kick se...
C 學習筆記(5) 封裝 繼承 多型
封裝 每個物件都能包含它能進行操作所需要的所有資訊,這個特性稱為封裝,因此物件不必依賴其他物件來完成自己的操作。封裝的好處 l 良好的封裝能夠減少耦合。l 類內部的實現可以自由地修改。l 類具有清晰的對外介面。繼承 物件的繼承代表了一種 is a 的關係,如果兩個物件a和b,可以描述為 b是a 則表...
C 學習筆記(二) 封裝 繼承 多型
2.繼承 2.4 繼承和訪問修飾符 2.5 黎克特制替換原則 3.多型 封裝 繼承 多型是物件導向的三大特點,而在c 也是不例外,這篇文章將闡述封裝 繼承 多型的用法和思想。封裝,就是將類的屬性和方法封閉起來,外部成員不可直接呼叫,只能通過預留的介面訪問。封裝允許類自身的屬性和方法被一些可信物件操作...