OC面向物件_三大特性
阿新 • • 發佈:2019-02-08
封裝:
把具體的物件封裝成抽象的類,隱藏內部實現,物件的屬性和實現細節,僅對外公開介面,提高程式碼的安全性,實現模組化呼叫。為元素公有私有就是為了隱藏實現細節,只露一個乾淨的介面,讓業務邏輯被實現細節所汙染,就是所謂的封裝
繼承:
擁有父類的所有非私有的成員變數、屬性和方法就是is-a的關係
子類可以擴充套件父類沒有的屬性和方法,是一種強耦合的關係,就是父類變了,子類就不得不變
多型:
實現同一個介面,使用不同的例項而執行不同的操作。就是不同物件響應同一方法時做出的不同反應,是一種現象。
類的多型即父類的指標指向子類的物件,所以沒有繼承就沒有多型
使用多型時,會動態檢測,以呼叫真實的物件方法
父類的指標指向子類的物件的程式碼實現:
有Student類和Student的子類為SubStudent
實現為:
Student *stu = [SubStudent new];
多型是不同型別的物件使用同一方法的不同實現,沒有繼承就沒有多型,因此,多型就是發生在父類與子類之間的。父類與子類對同一方法的不同實現就是多型
父類可以利用多型呼叫子類的方法,只需使用方法選擇器就可以呼叫子類的方法,也可以直接呼叫子類方法,但是如果是子類特有的方法就不能呼叫,因為編譯時會出現錯誤,其實執行程式是不會報錯的,是可以執行的(所以父類可以直接呼叫與父類重名的方法)。但是父類是沒辦法使用子類的屬性或者成員變數的。
對於屬性,可以使用方法選擇器呼叫子類的屬性方法,但是無法對其進行操作,對於setter方法更是如此,直接crach,getter方法獲取為空,因為根本沒法對其賦值。