天天看點

OC基礎之通路修飾符

做c#、java的人都知道private、protect、public這些通路權限,在oc中看項目基本都沒用到這些,昨天就好奇的仔細了解了下,其實oc中也是有這些通路權限的修飾。說實話有好多做過程式設計的也未必對這些基礎知識了解。

1.厘清屬性和變量的差別

屬性是對變量的封裝,可以通過屬性(get\set)方法來通路變量。例如有一些變量(例如年齡、性别等)在指派或取值要滿足一些條件,那如何解決呢? 于是屬性就應運而生,用它的get、set方法來解決這個問題 ,這也是面向對象中封裝的展現。

2.private、protect、public通路權限修飾符

這些修飾符可以對變量、屬性、方法進行修飾。為什麼會出現這些修飾符呢?比如一些資訊是隐私的不希望被外部通路或者通路也隻能它家族裡可以通路,是以權限修飾符應運而生。

3.oc中的private、protect、public通路權限修飾符 

看别人的項目包括自己的項目都沒有對屬性、方法、變量的修飾符。其實oc中也是有這些的,隻是不常用或者根本甚至根本沒用過。

屬性通路權限

protected  該類和所有的子類中的方法可以直接通路這樣的變量,這是預設的。

private    該類中的方法可以通路這樣的變量,子類不可以 可以将變量放在.m中

public     除了自己和子類中的方法外,也可以被其他類或者其他子產品中的方法所通路。開放性最大。

package    架構集中

方法通路權限

隻有public、private  public .h檔案   private .m中

4.代碼demo

下面定義了一個父類student,子類oldstudent繼承父類student。

在上面oldstudent中并不能直接通路student中的weight。

上面的代碼中看到可以通過類似c++中->來通路變量。oldstudent不能直接通路age變量,可以通過屬性來通路。

這篇主要了解繼承封裝,對于多态,oc中的多态和c#的還不太一樣,oc是沒有編譯時多态,是通過消息轉發來完成,之前部落格也有寫。

上一篇: HTML
下一篇: html③