OC面向对象—封装
OC面向?qū)ο蟆庋b
一、面向?qū)ο蠛头庋b
面向?qū)ο蟮娜筇匦?#xff1a;封裝(成員變量)、繼承和多態(tài)
在OC語言中,使用@interface和@implementation來處理類。
?
@interface就好像暴露在外面的時(shí)鐘表面,像外界提供展示以及接口。@implementation就好像隱藏在時(shí)鐘內(nèi)部的構(gòu)造實(shí)現(xiàn),把具體的實(shí)現(xiàn)封裝了起來。
?
二、Set方法
在開發(fā)過程中,考慮到安全性要求,我們一般不在成員變量名前面使用@public、@protected等關(guān)鍵字修飾,而是使用Set方法來為對(duì)象提供成員變量的值。在set方法的內(nèi)部也可以對(duì)一些不合理的賦值進(jìn)行篩選過濾。
Set方法的作用:為外界提供一個(gè)設(shè)置成員變量值的方法
命名規(guī)范:
(1)方法名必須以set開頭
(2)Set后面跟上成員變量的名稱,首字母大寫
(3)返回值一定是void
(4)一定要接收一個(gè)參數(shù),而且參數(shù)類型需要和成員變量的類型一致
(5)形參名不能喝成員變量名一樣(蘋果官方推薦成員變量名前加_以示區(qū)分)
Set方法的好處:
(1)不讓數(shù)據(jù)暴露在外,保證了數(shù)據(jù)的安全性
(2)對(duì)設(shè)置的數(shù)據(jù)進(jìn)行過濾
Set方法使用示例:
Set方法的聲明:
?
Set方法的實(shí)現(xiàn):
?
測(cè)試程序:
?
三、Get方法
Get方法的作用:為調(diào)用者返回對(duì)象內(nèi)部的成員變量
命名規(guī)范:
(1)一定有返回值,返回值的類型和成員變量的類型一致
(2)方法名和成員變量名一樣
(3)不需要接收任何參數(shù)
Get方法使用示例:
Get方法的聲明:
?
Get方法的實(shí)現(xiàn):
?
測(cè)試程序:
?
?
注意1:在實(shí)際的開發(fā)中,不一定set和get方法都會(huì)提供,如果內(nèi)部的成員變量比如學(xué)生的學(xué)號(hào)這樣的數(shù)據(jù)只允許外界讀取,但是不允許修改的情況,則通常只提供get方法而不提供set方法。
注意2:成員變量名的命名以下劃線開頭,get方法名不需要帶下劃線,使用下劃線開頭有兩個(gè)好處:(1)與get方法的方法名區(qū)分開來;(2)可以喝一些其他的局部變量區(qū)分開來,下劃線開頭的變量,通常都是類的成員變量。
四、Self關(guān)鍵字
Self是一個(gè)指針,誰調(diào)用了當(dāng)前方法,self就指向誰
【出現(xiàn)在對(duì)象方法中,就代表著當(dāng)前對(duì)象,出現(xiàn)在類方法中,就代表著當(dāng)前類】
Self的用途:
(1)可以利用self->成員變量名訪問當(dāng)前對(duì)象內(nèi)部的成員變量(僅在對(duì)象方法中)
(2)[self?方法名];可以調(diào)用其他的對(duì)象方法或者是類方法
五、練習(xí)
要求:設(shè)計(jì)一個(gè)成績(jī)類
?
實(shí)現(xiàn):
?
測(cè)試程序:
?
轉(zhuǎn)載于:https://www.cnblogs.com/crash-wu/p/4806359.html
總結(jié)
- 上一篇: “”和“” java
- 下一篇: ios下划线变量:为什么变量前要加下划线