1. 程式人生 > >OC面向物件_三大特性

OC面向物件_三大特性



封裝:

    把具體的物件封裝成抽象的類,隱藏內部實現,物件的屬性和實現細節,僅對外公開介面,提高程式碼的安全性,實現模組化呼叫。為元素公有私有就是為了隱藏實現細節,只露一個乾淨的介面,讓業務邏輯被實現細節所汙染,就是所謂的封裝

繼承:

    擁有父類的所有非私有的成員變數、屬性和方法就是is-a的關係

    子類可以擴充套件父類沒有的屬性和方法,是一種強耦合的關係,就是父類變了,子類就不得不變

多型:

     實現同一個介面,使用不同的例項而執行不同的操作。就是不同物件響應同一方法時做出的不同反應,是一種現象。

類的多型即父類的指標指向子類的物件,所以沒有繼承就沒有多型

使用多型時,會動態檢測,以呼叫真實的物件方法

父類的指標指向子類的物件的程式碼實現:

    有Student類和Student的子類為SubStudent

實現為:

    Student *stu = [SubStudent new];

多型是不同型別的物件使用同一方法的不同實現,沒有繼承就沒有多型,因此,多型就是發生在父類與子類之間的。父類與子類對同一方法的不同實現就是多型

父類可以利用多型呼叫子類的方法,只需使用方法選擇器就可以呼叫子類的方法,也可以直接呼叫子類方法,但是如果是子類特有的方法就不能呼叫,因為編譯時會出現錯誤,其實執行程式是不會報錯的,是可以執行的(所以父類可以直接呼叫與父類重名的方法)。但是父類是沒辦法使用子類的屬性或者成員變數的。

對於屬性,可以使用方法選擇器呼叫子類的屬性方法,但是無法對其進行操作,對於setter方法更是如此,直接crachgetter方法獲取為空,因為根本沒法對其賦值。