一 实例方法可见度,方法
1.实例变量的可见度
可见度 特点
public(公有的) 实例变量可以在类的外部和内部操作
protected(受保护的,默认的) 实例变量只能在该类和其子类内操作
private(私有的) 实例对象只能在该类内访问
注:所谓的内部,指的是相应类的@implementation 和 @end 之间
思考:为什么不使用@public 关键字:
1.使用@ public 关键字,暴露了类内部的细节.
2.不符合面向对象语言的三大特性之一 __封装
二 .OC中的方法分两种:类方法和实例方法
1.类方法:只能类使用,例如:+(id)alloc 注意:类方法中不能使用实例变量
实例方法:只能对象使用,例如:- (void)sayH;
2.[person sayHi];
在 OC 中没有”student 调用 sayHi"这种表述
在 OC 中使用消息发送机制:[ receiver message ];
正确表述:给 student 对象发送 sayHi 消息.
a.student 接收到消息,即方法 sayH;
b. student 找到 sayHi 方法,并执行.
3.” : “ 标示参数,不能省略.有冒号必须有参数.
4.setter,getter 的书写格式.
OC 里规定了 setter 和getter 的书写格式.
如果一个实例变量是 int age ;或者 int _age;
setter 的书写格式如下: - (void)setAge:(int)age; 即 set+ 首字母大写的实例变量名
(忽略下划线).
getter 的书写格式如下:- (int)age; 即返回值类型与变量类型一致,方法名由于实例变量名相同(忽略下划线)
三.与实例变量的关系
无论是 setter 还是 getter 内部操作的都是实例变量
每一个实例变量都需要一对 setter 和 getter 方法
四:自定义初始化方法
- (id)init 这个初始化方法只能给实例变量设置默认值,不灵活.
- (id)initWithName: 自定义初始化方法,根据需求定义初始化方法.
示例:
- (id)initWithName:(NSString *) name sex:(NSString *)sex;
- (id)initWithName:(NSString *)name sex:(NSString *)sex{
_name = name;
_sex = sex;
return self;
}
五. #import
导入头文件,即:导入头文件中的内容到当前类.
#import “” 导入自定义类,# import<> 导入类库中的头文件.
功能类似于 C 语言中的# include, 但是可以避免头文件被重复导入
容易出现循环导入头文件问题
六:@ class
告诉编译器@ class 后的字符串作为类名使用,并未导入类的接口内容.
有效避免嵌套循环导入.
总结:
a. 实例变量有三种常见的可见度: @public, @protected,@private
[email protected] 违背了封装特性,面向对象开发中很少使用;@protected 默认可见度,自己和子类中能使用 —>访问实例变量;@ private 自己类中能使用—>访问实例变量.
c. 方法是 OC 的核心,采用消息机制:[ receive message].
“-“message 由对象来调用;
“+”message 由 类来调用.