- 比如你定義一個(gè)函數(shù)void add(int a, int b),這里的a和b就是形參截珍。
- 當(dāng)你進(jìn)行函數(shù)調(diào)用的時(shí)候坎拐,add(1, 2),這里的1和2就是
<font color=lightpink>
1芹缔、形參變量只有在被調(diào)用時(shí)才分配內(nèi)存單元坯癣,在調(diào)用結(jié)束時(shí),即刻釋放所分配的內(nèi)存單元乖菱。因此,形參只在函數(shù)內(nèi)部有效蓬网。函數(shù)調(diào)用結(jié)束返回主調(diào)用函數(shù)后則不能再使用該形參變量窒所。
2、實(shí)參可以是常量帆锋、變量吵取、表達(dá)式、函數(shù)等锯厢,無論實(shí)參是何種類型的量皮官,在進(jìn)行函數(shù)調(diào)用時(shí),它們都必須有確定的值实辑,以便把這些值傳送給形參捺氢。因此應(yīng)預(yù)先用賦值,輸入等辦法使參數(shù)獲得確定值剪撬。
3摄乒、實(shí)參和形參在數(shù)量上,類型上、順序上應(yīng)嚴(yán)格一致馍佑,否則就會(huì)發(fā)生類型不匹配的錯(cuò)誤斋否。
4、在一般傳值調(diào)用的機(jī)制中只能把實(shí)參傳送給形參拭荤,而不能把形參的值反向地傳送給實(shí)參茵臭。因此在函數(shù)調(diào)用過程中,形參值發(fā)生改變舅世,而實(shí)參中的值不會(huì)變化旦委。而在引用調(diào)用的機(jī)制當(dāng)中是將實(shí)參引用的地址傳遞給了形參,所以任何發(fā)生在形參上的改變實(shí)際上也發(fā)生在實(shí)參變量上 </font>
1.封裝可以實(shí)現(xiàn)對(duì)不合理值的過濾,防止外界隨意修改和訪問類中的成員變量.
2.<font color=green>繼承描述的是事物之間的所屬關(guān)系,通過繼承可以使用多種事物之間形成一種關(guān)系體系.
</font>
- 類的繼承是指在一個(gè)現(xiàn)有類的基礎(chǔ)上去構(gòu)建一個(gè)新的類,構(gòu)建出來的新類被稱作子類,現(xiàn)有類被稱為父類,子類會(huì)自動(dòng)擁有父類所有可繼承的屬性和方法.
- 在繼承關(guān)系中,子類會(huì)自動(dòng)繼承父類中定義的方法,<font color=redyellow>但有時(shí)在子類中需要對(duì)繼承的方法進(jìn)行一些修改,即對(duì)父類的方法進(jìn)行重寫.</font>需要注意的是,<font color=pinkyellow>在子類中重寫的方法需要和父類被重寫的方法具有相同的方法名,參數(shù)列表以及返回值類型.</font>
- 子類重寫父類方法后,會(huì)將父類被重寫的方法進(jìn)行覆蓋.子類將無法訪問父類中被重寫的方法,為了解決這個(gè)問題,OC中提供了一個(gè)
super
關(guān)鍵字,專門用來訪問父類中的方法. - 注意:子類重寫父類后,不能使用比父類中被重寫方法更嚴(yán)格的訪問權(quán)限.
3.在設(shè)定一個(gè)方法時(shí),通常希望該方法具備一定的通用性.在同一個(gè)方法中,這種由于參數(shù)類型不同而導(dǎo)致執(zhí)行效果各異的現(xiàn)象就是多態(tài).
- 使用多態(tài)不僅能解決方法同名的問題,而且還使程序變得更靈活,有效提高程序的可擴(kuò)展性和可維護(hù)性.
- <font color = purplepink>demo:
Animal *a1 = [Dog alloc] init];
[a1 print];
程序在編譯時(shí)會(huì)報(bào)錯(cuò),提示Animal類中沒有聲明print方法.這是因?yàn)楫?dāng)Animal類的指針變量指向新創(chuàng)建 的Dog對(duì)象后,Dog對(duì)象會(huì)被當(dāng)成Animal對(duì)象使用,當(dāng)編譯器檢查Animal類的時(shí)候,發(fā)現(xiàn)Animal中沒有定義print方法,所以報(bào)錯(cuò).
將Animal對(duì)象強(qiáng)轉(zhuǎn)為Dog對(duì)象:
Animal *a1 = [Dog alloc] init];
Dog *d = (Dog *)a1;
[d print]; </font> - <font color=purpleblue>demo:
Cat *c = [[Dog alloc]init];
Dog *d = (Dog *)c;
[d print];
程序編譯出錯(cuò),提示Cat類型的指針和Dog類型初始化的對(duì)象不匹配,這是因?yàn)镈og類的實(shí)例對(duì)象無法被Cat類型的指針變量引用,所以,多態(tài)僅限于父類指針指向子類.</font> - <font color=blred>注意:多態(tài)中父類的指針指向子類的實(shí)例對(duì)象運(yùn)用的原理是:id類型的動(dòng)態(tài)綁定,就是指直接向id類型的對(duì)象發(fā)送調(diào)用方法的消息,讓系統(tǒng)自動(dòng)地根據(jù)該id對(duì)象所指向的實(shí)際對(duì)象類型做出判斷,來執(zhí)行具體的不同方法行為,調(diào)用方法時(shí)會(huì)檢測(cè)對(duì)象的真實(shí)形象,從而返回一個(gè)真實(shí)的對(duì)象類型.id的變量可以存放任何數(shù)據(jù)類型的對(duì)象,id類型的指針可以指向任何一個(gè)集成NSObject類的對(duì)象. </font>
的