Objective-C 中public、protected、private 的使用
Objective-C中,類的實例化變量的范圍有@private、@protected、@public。他們代表的意思和C++中相同,只是前面添加了一個@符號。下面介紹一下他們代表的范圍:
指令 | 意思 |
@private |
作用范圍只能在自身類 |
@protected | 作用范圍在自身類和繼承自己的子類,什么都不寫,默認是此屬性。 |
@public | 作用范圍最大,在任何地方 |
下面是官方的圖:
下面是一個例子,來說明他們之間的關系:
實現一個Boss類:
#import實現一個Worker類繼承Boss類:@interface Boss : NSObject { @private int age; @protected NSString *job; } @end
#import在Worker的.m文件中添加:#import "Boss.h" @interface Worker : Boss { NSString *name; @private NSString *evaluation; @protected float wage; @public NSString *boss; } - promoteTo:newPosition; @end
#import "Worker.h" @implementation Worker - promoteTo:newPosition { id old = job; job = newPosition; return old; } -(NSString *)description { return [NSString stringWithFormat:@"Worker name:%@,evaluation:%@,job:%@,wage:%f,boss:%@",name,evaluation,job,wage,boss]; } @end
如果我們在Worker中調用Boss中的私有變量age,會報錯:
但是調用job是沒有問題的。
下面在其他類中調用Worker類:
Worker *ceo = [[Worker alloc] init]; ceo->boss = @"XX"; [ceo promoteTo:@"YY"]; NSLog(@">>>=%@",[ceo description]);
運行結果:
但是調用protected的屬性會報錯:
所以當一些比較重要的屬性,不能隨便更改的時候,要用private,這樣避免其他繼承類修改此屬性。
本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!