物件導向的三大特徵:封裝、繼承、多型 一、
封裝(成員變數的封裝)
set方法和
get方法
set方法(能修飾內部變數)
1、 作用:提供乙個方法,讓外界設定成員變數的值,可以在方法裡面對引數進行過濾
2、 命名規範:
1>
方法名必須以set開頭
2>
set後面跟上成員變數的名稱,成員變數首字母必須大寫
3>
返回值一定是void型別
4>
一定要接收乙個引數,而且引數型別跟成員變數型別一致
5>
形參名稱不能跟成員變數名稱一致
get方法(只能訪問,不能修改)
1、作用:返回物件內部的成員變數 2、
命名規範:
1>
肯定有返回值,返回值型別肯定和成員變數一致
2>
方法名與成員變數名一致
3>
不需要接收任何引數
成員變數
成員變數的命名規範
: 成員變數都以下劃線「_
」開頭
作用:1>
可以跟get
方法的名稱區分開
2>
可以跟其他區域性變數區分開,一看到下劃線開頭的變數,肯定是成員變數
封裝的好處
1>
過濾不合理的值
2>
遮蔽內部的賦值過程
3>
讓外界不必關注內部的細節
類方法和物件方法對比
1>
類方法:
1、以加號+
開頭2、
只能用類名呼叫,物件不能呼叫
3、類方法中不能訪問例項變數(成員變數)
4、使用場合:當不需要訪問成員變數的時候,盡量用類方法
2>
物件方法:
1、以減號-
開頭2、
只能讓物件呼叫,沒有物件,這個方法根本不可能被執行
3、物件方法能訪問例項變數(成員變數)
3>
類方法和物件方法可以同名
self:指向了方法呼叫者(為指向指標),代表當前物件 用
self
訪問成員變數,區分同名的區域性變數
1、使用細節
出現的地方:所有的
oc方法中(物件方法
\類方法),不能出現在函式用法
: "self->成員變數名
" 訪問當前方法呼叫的成員變數
"[self
方法名];"
來呼叫方法(物件方法\
類方法)
2、常見錯誤
低階錯誤:用self
去呼叫函式
類方法中用
self
呼叫物件方法,物件方法中用
self
呼叫類方法
,使self死迴圈
二、繼承
1. 繼承的好處:
1>
抽取了重複**
2>
建立了類與類之間的聯絡
2. 子類可以擁有父類中的所有成員變數和方法
3. 基本上所有類的根類都是
nsobject
4. 注意點: (
1)不允許子類和父類擁有相同的成員變數 (
2)父類放在子類之前宣告 (
3)子類和父類允許有相同的方法 (
4)呼叫某個物件的方法時,優先去當前類中找,如果找不到,再去父類中找(5
)子類重新實現父類的某個方法,會覆蓋父類以前的方法
5. 每個類中都有乙個
superclass
指標指向父類
6. 繼承的缺點:耦合性太強(類與類之間的關係過於緊密)
7. 繼承和組合
繼承:xx 是
***組合:
xx擁有
***
(格式 :
score
*_score)
8.繼承的使用場合
它的所有屬性都是你想要的,一般就繼承
它的部分屬性是你想要的,可以抽取出另乙個父類
super關鍵字
1>
可以直接呼叫父類中的方法
2>
super處在物件方法中,就會呼叫父類的物件方法。處在類方法中,那麼就會呼叫父類的類方法
3>
適用場合:子類重寫父類的方法時想保留父類的一些行為
三、多型(
某一類事物的多種形態)
1. 要想使用多型必須使用繼承(繼承是多型的前提)
2. 多型:父類指標指向子類物件
多型的體現
person *p = [student new];
p->age = 100;
[p walk];
子類物件賦值給父類指標
父類指標訪問對應的屬性和方法
3. 好處:如果函式或方法引數中使用的是父類型別,可以傳入父類,子類物件
4. 侷限性:父類型別的變數不能直接呼叫子類特有的方法,必須強制轉換為子類型別變數後,才能使用
黑馬程式設計師 OC物件的三大特性
oc語言是物件導向的語言,其三大特性必不可少。1.封裝是乙個很重要的概念,它避免外界直接訪問或修改物件的屬性,可以過濾不合理的值,讓外界不必關心內部的細節。通過set方法來讓外部設定成員的屬性值,通過get方法來獲得物件屬性值。import inte ce student nsobject void...
黑馬程式設計師 OC 物件導向三大特性
封裝 一 set方法和get方法 1.set方法和get方法的使用場合 public的成員可以被隨意賦值,應該使用set方法和get方法來管理成員的訪問 set方法 1 作用 用來設定成員變數,可以在方法裡面過濾掉一些不合理的值 2 命名規範 方法都是以set開頭,而且後面跟上成員變數名,成員變數名...
黑馬程式設計師 OC基礎
asp.net unity開發 net培訓 期待與您交流!1.import的用途 1 跟 include一樣,拷貝檔案的內容 2 可以自動防止檔案的內容被重複拷貝 2.import nsobjcruntime.h中有nslog函式的宣告,一般用 3.foundation框架標頭檔案的路徑 4.主標頭...