oc是一門物件導向的變成語言,具有面向兌現的最基本的特徵:封裝性、繼承性、和多型性。
一.封裝
為何要用封裝?
當定義了乙個類時,類中的資料不允許外界訪問,或者允許外界只能讀取不能修改而需要隱藏時,就需要用到 set方法或者get方法。
1.oc中的set方法
作用:提供外界設定成員變數值,對引數進行過濾
規範:1>方法名必須以set開頭,後面跟上首字母大寫的成員變數的名稱
2>方法的返回值為void
3>方法形參的名稱不能跟成員變數名一樣
2.oc中的get方法
作用:返回物件內部的成員變數
1>方法的返回值型別與成員變數型別一致
2>方法名跟成員變數名一樣
3>不需要接受任何引數
例如:
/*
*建立類student
*成員變數:_age
*/@inte***ce student :nsobject //類的定義
- (void)setage : (int)newage;//set方法的定義
- (void)age;//get方法的定義
- (void)study;//study方法的定義
@end
@implementation student //類的實現
- (void)setage : (int)newage //set方法的實現
- (void)age //get方法的實現
- (void)study //study方法的實現
@end
二、繼承
繼承的標識為英文的「:」冒號,使用繼承可以定義乙個具有父類所有功能(成員和方法)的新類,它繼承了父類的功能。
為何要使用繼承?
將所有重複的內容合併在一起,可以使**有效率,簡潔,才意味著是乙個成功的架構。否則,修改**時需要修改多處,就很容易出錯。
1.繼承的根類
大多都繼承自 nsobject 類,所以在定義乙個類時,要繼承nsobject 類。
2.使用注意
1>父類要寫在子類前面
2>oc中不允許子類中擁有和父類中相同名稱的成員變數
3>oc中子類可以重寫父類方法,當呼叫子類時優先呼叫子類方法
4>繼承造成類與類之間耦合性太強,若父類不見,則子類不能使用
例如:
/*
*定義乙個person類,定義乙個student類,student繼承自person,則student為person的子類,person為stuent的父類
/@interfence person :nsobject //定義父類
- (void)eat;//定義父類方法
@end
@implementation person //父類的實現
- (void)eat //實現父類方法
@end
@interfence student : person //定義子類繼承person類
@end
@implementation student
@end
//則雖然在子類student中沒有定義_age和_weight,因為子類繼承了父類person,所以子類擁有了父類中所有的成員和方法
三、多型
要想體現出多型性,則必須有繼承。
1.多型的體現
父類指標指向了子類物件
2.多型的好處
1>引數中使用父類型別,則可以傳入父類和子類物件
2>可以把多個函式集成為乙個函式,簡化**
3.多肽的侷限性
父類型別的變數不能用來呼叫子類的方法
例如:
/*
*定義兩個類,乙個為animal為父類,乙個為dog為子類
*/@inte***ce animal : nsobject
- (void)eat;
@end
@implementation animal
- (void)eat
@end
@inte***ce dog : animal
- (void)run;
@end
@implementation dog
- (void)run
@end
//這個函式是專門用來喂動物的
void feed(animal *animal)
int main()
OC的三大特性之繼承
繼承的好處 1 抽取重複 2 建立了類之間的關係 3 子類可以擁有父類中的所有成員變數和方法 注意點 1 基本上所有類的根類是nsobject import animal的宣告 inte ce animal nsobject void setage int age int age void setw...
OC三大特性之繼承和多型
一 繼承 1.概念 程式裡的繼承子類繼承了父類,那麼子類就擁有父類中的所有成員變數和方法,這跟現實中的狗是動物的一種,狗也具備了動物 所必備的屬性,更符合我們的理解。2.繼承的好處與缺點 1 抽取出了重複的 2 建立了類和類之間的聯絡 繼承的缺點 耦合性太強 3.繼承的例項 inte ce anim...
python物件導向的三大特性 封裝 繼承 多型
python物件導向的三大特性 封裝 繼承 多型 定義乙個類 class person def eat self print 吃 def sleep self print 睡覺 建立乙個人的物件p,它可以呼叫person類的方法 p person p.eat p.sleep class person...