封裝的關鍵字

/*
  成員變量的做用範圍:
  @public:在任何地方都能直接訪問對象的成員變量
  @private:只能在當前類的對象方法中直接訪問,若是子類要訪問須要調用父類的get/set方法 @protected:能夠在當前類及其子類對象方法中直接訪問(系統默認下是用它來修飾的) @package:在同一個包下就能夠直接訪問,好比說在同一個框架 注意: 不管父類是在@interface仍是@implementation聲明的成員變量子類都能擁有;可是子類能不能直接經過變量名來訪問父類中定義的成員變量是須要看父類中定義的成員變量是由什麼修飾符來修飾的。 默認:在@implementation中成員變量的修飾符爲@private, 在@interface中成員變量的修飾符@protected */ #import @interface Person : NSObject { @public int _no; // 學號 @private int _age; // 年齡 @protected NSString *_name; // 姓名 } // 由@pirvate修飾的成員變量,子類對象只能經過get/set來訪問 - (void)setAge:(int)age; - (int)age; @end /********************************在main方法中*******************************/ #import #import "Person.h" #import "Student.h" int main(int argc, const char * argv[]) { Person *person = [Person new]; // 在Person.h文件中no是@public修飾的能夠直接訪問 person->_no = 10; NSLog(@"%d",person->_no); // 打印是10 // Student類繼承了父類Person類中的全部成員變量和方法,可是子類不能直接訪問父類中由@private修飾的成員變量 Student *stu = [Student new]; [stu setAge:1000]; NSLog(@"%d",[stu age]); return 0; }
相關文章
相關標籤/搜索