一 实例方法可见度,方法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,@privateb.@public 违背了封装特性,面向对象开发中很少使用;@protected 默认可见度,自己和子类中能使用 —>访问实例变量;@ private 自己类中能使用—>访问实例变量.c. 方法是 OC 的核心,采用消息机制:[ receive message].“-“message 由对象来调用;“+”message 由 类来调用.