属性
1. 实例变量的范围(作用域)
a) private:私有的,只能在本类中使用,外部不能直接使用
b) protected:受保护的,能在本类和子类中使用,外部不能直接使用
c) public:公共的,所有人都可以使用
2. 访问器(set和get)
a) 使用访问器的原因:
i. 加强数据的安全性
ii. 实现外部可以访问protected 和 private 的实例变量
b) set方法
i. 声明格式:-(void) set实例变量名:(参数类型)参数名;(实例变量名开头要大写)
1. 例如:-(void)setAge:(int)age1;
ii. 实现:-(void)set实例变量名:(参数类型)参数名{}(实例变量名开头要大写)
1. 例如:-(void)setAge:(int)age1{ age = age1};
iii.
c) get方法
i. 格式:-(返回值类型) get实例变量名;(实例变量名开头要大写)
1. 例如:-(int)getAge;
ii. 实现:-(int)get实例变量名{}(实例变量名开头要大写)
1. 例如:-(int)setAge {return age};
d)
3. 关键字@property 和 @synthesize
a) 作用:声明创建属性。
b) @property
i. 格式:@property 数据类型属性名;
ii. 例如:@property int age; 或@property NSString *name;
iii. 其中包含:
1. 实例变量
2. set方法的声明
3. get方法的声明
c) @synthesize
i. 格式:@synthesize 属性名;
ii. 例如:@synthesize age; 或@synthesize name;
iii. 其中包含:
1. set方法的实现
2. get方法的实现
iv. 如果.h文件中定义了实例变量,.m文件中使用@synthesize,并且属性和实例变量名称相同,@synthesize会将属性生成的getter和setter与实例变量合成
v. 如果.h文件中省略了实例变量,.m文件中使用@synthesize,会自动生成同属性名的实例变量,将getter和setter与生成后的变量合成
vi. .m文件中可以使用@synthesize指定属性生成什么样的实例变量名称
1. @synthesize 属性名 = 生成的实例变量名;
d) PS:当用了@property后,实例变量可以省略,@synthesize也可以省略不写;@synthesize省略后,系统会自动生成一个带下划线的变量,以及set和get方法的实现。
4. (.)点语法
a) OC中点语法相当于get、set的另一种形式
b) 点语法在OC和C中的区别
i. 在OC中,点语法相当于set和get方法的另一种形式
ii. 在C中,点语法就是访问结构体的成员变量
c) PS:在OC中,不能在set 和 get方法中使用(self.属性名)
5. 封装
a) 什么叫封装:隐藏内部实现,稳定外部接口;可以看做包装;
b) 封装的实现:
i. 属性封装了实例变量、set和get方法
ii. 方法封装了具体的实现代码
iii. 类封装了属性和方法
c)
6.