日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OC-封装、继承、多态

發(fā)布時(shí)間:2023/12/19 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OC-封装、继承、多态 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

面向?qū)ο蟮娜筇卣?#xff1a;封裝、繼承、多態(tài)

1.封裝

什么是封裝:在程序上,隱藏對(duì)象的屬性和實(shí)現(xiàn)細(xì)節(jié),僅對(duì)外公開接口,控制在程序中屬性的讀和修改的訪問級(jí)別;將對(duì)象得到的數(shù)據(jù)和行為(或功能)相結(jié)合,形成一個(gè)有機(jī)的整體,也就是將數(shù)據(jù)與操作數(shù)據(jù)的源代碼進(jìn)行有機(jī)的結(jié)合,形成“類”,其中數(shù)據(jù)和函數(shù)都是類的成員。

1> set方法
① 作用:提供一個(gè)方法給外界設(shè)置成員變量值,實(shí)現(xiàn)對(duì)參數(shù)的相應(yīng)過濾

② 命名規(guī)范

   *方法名必須以set開頭

   *set后面跟上成員變量的名稱,成員變量名首字母必須大寫

   *返回值一定是void

   *一定要接收一個(gè)參數(shù),而且參數(shù)類型跟成員變量類型一致

   *形參的名稱不能跟成員變量名一樣
eg:

#import <Foundation.foundation.h>@interface Student : NSObject : NSObject //聲明一個(gè)類 {int _age;//設(shè)置一個(gè)成員變量 }- (void)study;//聲明一個(gè)study對(duì)象方法 - (void)setAge:(int)age;//聲明set方法@end@implementation Student //對(duì)聲明的方法進(jìn)行實(shí)現(xiàn)- (void)setAge:(int)age //set方法的實(shí)現(xiàn) {if(age <= 0) //對(duì)不合理的值進(jìn)行過濾{age = 1;}_age = age; }- (void)study //study方法的實(shí)現(xiàn) {NSLog("%d歲的學(xué)生在學(xué)習(xí)",age); }@endint main() {Student *stu = [Student new];//新建一個(gè)Student類型對(duì)象[stu setAge :10];//調(diào)用set方法進(jìn)行賦值操作[stu study];// 對(duì)象調(diào)用對(duì)象方法return 0; }

2> get方法
  ①作用:返回成員變量值

  ②命名規(guī)范

   *有返回值,返回值類型與成員變量類型相同

   *方法名跟成員變量名相同

   *不需要接收任何參數(shù)

eg:

#import <Foundation.foundation.h>@interface Student : NSObject //聲明一個(gè)類 {int _age;//設(shè)置一個(gè)成員變量 }- (void)study;//聲明一個(gè)對(duì)象方法 - (void)setAge:(int)age;//聲明set方法 - (int)age;//聲明get方法@end@implementation Student //對(duì)聲明的方法進(jìn)行實(shí)現(xiàn)- (void)setAge:(int)age //set方法的實(shí)現(xiàn) {if(age <= 0) //對(duì)不合理的值進(jìn)行過濾{age = 1;}_age = age; }- (int)age // get方法的實(shí)現(xiàn) {return _age; }- (void)study //study方法的實(shí)現(xiàn) {NSLog("%d歲的學(xué)生在學(xué)習(xí)",[stu age]);//get方法的調(diào)用 }@endint main() {Student *stu = [Student new];//新建一個(gè)Student類型對(duì)象[stu setAge :10];//調(diào)用set方法進(jìn)行賦值操作[stu study];// 對(duì)象調(diào)用對(duì)象方法return 0; }

3> 封裝細(xì)節(jié)

 ①成員變量名以_開頭,命名規(guī)范

  *作用1,讓成員變量名與get方法名區(qū)分開

  *作用2,跟局部變量名分開,帶_一般就是成員變量名

eg:

#import <Foundation.Foundation.h>@interface Score : NSObject //聲明Score類 {int _cScore;//設(shè)置成員變量 _cScoreint _ocScore;//設(shè)置成員變量 _ocScoreint _totalScore;//設(shè)置成員變量 _totalScoreint _averageScore;//設(shè)置成員變量 _averageScore }- (void)setCScore:(int)cScore;//聲明set方法 - (int)cScore;//聲明get方法- (void)setOcScore:(int)ocScore;//聲明set方法 - (int)ocScore;//聲明get方法- (int)totalScore;//聲明get方法 - (int)averageScore;//聲明get方法@end@implementation Score //方法的實(shí)現(xiàn)- (void)setCScore:(int)cScore //set方法的實(shí)現(xiàn) {_cScore = cScore;_totalScore = _cScore + _ocScore;//計(jì)算總分,監(jiān)聽成員變量的改變_averageScore = _totalScore/2;//計(jì)算平均分 }- (int)cScore // get方法的實(shí)現(xiàn) {return _cScore; }- (void)setOcScore:(int)ocScore //set方法的實(shí)現(xiàn) {_ocScore = ocScore;_totalScore = _cScore + _ocScore; //計(jì)算總分,監(jiān)聽成員變量的改變_averageScore = _totalScore/2;//計(jì)算平均分 }- (int)ocScore // get方法的實(shí)現(xiàn) {return _ocScore; }- (int)totalScore // get方法的實(shí)現(xiàn) {return _totalScore; } - (int)averageScore // get方法的實(shí)現(xiàn) {return _averageScore ; }@endint main() {Score *sc = [Score new];int t = [sc _totalScore];int a = [sc _averageScore];NSLog("總分是%d,平均分是%d",t, a);return 0; }

4> 封裝的好處

  *過濾不合理的值

  *屏蔽內(nèi)部的賦值過程

  *讓外部不必關(guān)注內(nèi)部細(xì)節(jié)

5類方法和對(duì)象方法對(duì)比

1> 類方法:

1、以加號(hào)+開頭2、只能用類名調(diào)用,對(duì)象不能調(diào)用3、類方法中不能訪問實(shí)例變量(成員變量)4、使用場(chǎng)合:當(dāng)不需要訪問成員變量的時(shí)候,盡量用類方法

2> 對(duì)象方法:

1、以減號(hào)-開頭

2、只能讓對(duì)象調(diào)用,沒有對(duì)象,這個(gè)方法根本不可能被執(zhí)行

3、對(duì)象方法能訪問實(shí)例變量(成員變量)

3> 類方法和對(duì)象方法可以同名

Self:指向了方法調(diào)用者(為指向指針),代表當(dāng)前對(duì)象

用self訪問成員變量,區(qū)分同名的局部變量

1、使用細(xì)節(jié)

出現(xiàn)的地方:所有的OC方法中(對(duì)象方法\類方法),不能出現(xiàn)在函數(shù)

用法:

"self->成員變量名" 訪問當(dāng)前方法調(diào)用的成員變量"[self 方法名];" 來調(diào)用方法(對(duì)象方法\類方法)

2、常見錯(cuò)誤

低級(jí)錯(cuò)誤:用self去調(diào)用函數(shù)類方法中用self調(diào)用對(duì)象方法,對(duì)象方法中用self調(diào)用類方法,使self死循環(huán)

轉(zhuǎn)載于:https://www.cnblogs.com/wlios/p/4631866.html

總結(jié)

以上是生活随笔為你收集整理的OC-封装、继承、多态的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。