实例变量可见度可见度:
可见度 特点
public(公有的) 在类的内外部都可以操作
protected(系统默认,受保护的) 只能在类和子类中操作
private(私有的) 只能在该类内访问
{@publicNSString *_perName;NSString *_perSex;@protectedNSInteger _perAge;@privateNSString *_perHobby;}一般不使用@public,原因如下 容易暴漏类内部的细节不符合”封装的特性” 方法方法分类
OC中的方法可以分为两种
类方法 如:+(id)alloc实例方法 如:-(void)sayHi
注意:类方法中不能使用实例变量,且只能类使用. 实例方法只能对象使用
– (void) setStuName:(NSString *) stuName
其中
方法名就是方法语句去掉类型表示,返回类型,参数类型,参数名以及空格所剩的部分 即为setStuName: 注意:类中不能出现同名方法.”:”为标示参数,不可以省略,有冒号必须有参数
setter,getter
对实例变量赋值或者取值的时候使用
赋值方法:setter,为设置器
读取实例变量值的方法:getter,为访问器
赋值语句:当对多个语句进行操作的时候,称为赋值语句
Person.h
// 设置器- (void) setPerName:(NSString *)perName{_perName = perName;}// 访问器- (NSString *)perName{return _perName;}// 赋值语句- (void) setPerName:(NSString *)perNamesetPerSex:(NSString *)perHobby;
Person.m
// 设置器- (void) setPerName:(NSString *)perName{_perName = perName;}// 访问器- (NSString *)perName{return _perName;}// 赋值语句- (void) setPerName:(NSString *)perNamesetPerSex:(NSString *)perHobby;{_perName = perName;_perHobby= perHobby;}
注意
方法使用
当我们想调用方法时,使用
[person sayHi]
即为消息机制,对应的就是 [消息的接收者 具体要做的事]
自定义初始化方法-(id)init 一般的初始化方法只能给变量设置默认值,不灵活-(id)initWithName: 自定义初始化方法,可以根据需求来定义
.h
– (id) initWithPerName:(NSString *)perNameperSex:(NSString *)perSex;
.m
– (id) initWithPerName:(NSString *)perNameperSex:(NSString *)perSex;{_perName = perName;_perSex = perSex;return self;}#import
作用:导入头文件的内容到当前的类 其中
#import “xxx.h” 导入自定义的类#import <>导入类库中的头文件
注意:用import引入头文件容易引起交叉导入,导致错误 所以这时候应该使用@class ,用@class可以防止交叉引入头文件的问题,系统会把A当做是一个已经存在的类来使用,不会把A.h的内容进行拷贝,就是用了一下A的名,其他不做任何的检测
代码练习
main.m
// 创建一个对象// Student *stu = [[Student alloc] init];// [stu sayHi];// Student *stu = [[Student alloc] init];// [stu StuHobby:@StuSex:@”女” ];// [stu sayHi];//// [stu setStuName:@”abc”];// NSLog(@”%@”,[stu stuName]);// // 车// AudiCar *car = [[AudiCar alloc] init];// // 赋值语句// [car CarSpeed:300];// [car sayHi];// // setter getter// [car setCarBrand:@”A6″];// [car setCarPrice:@”60w”];// [car setCarSpeed:200];// NSLog(@”型号%@”,[car carBrand]);// [car sayHi];// Student *stu = [[Student alloc] initWithStuName:@”商帅” stuAge:24 stuScore:80 stuSex:@”男” stuHobby:@”比美”];// [stu sayHi];//// AudiCar *car = [[AudiCar alloc] initWithCarBrand:@”A4″ carPrice:@”30w” carSpeed:200];// [car sayHi];
AudiCar.h
{NSString *_carBrand;NSString *_carPrice;CGFloat _carSpeed;}- (void) sayHi;// 对三个成员变量进行统一赋值的赋值语句- (void) setCarBrand:(NSString *)carBrandsetCarPrice:(NSString *)carPricesetCarSpeed:(CGFloat)carSpeed;// 三个成员变量的设置器- (void) setCarBrand:(NSString *)carBrand;- (void) setCarPrice:(NSString *)carPrice;- (void) setCarSpeed:(NSInteger)carSpeed;// 访问器- (NSString *) carBrand;- (NSString *) carPrice;- (NSInteger) carSpeed;// 自定义初始化方法- (id) initWithCarBrand:(NSString *)carBrandcarPrice:(NSString *)carPricecarSpeed:(CGFloat)carSpeed;@end
AudiCar.m
@implementation AudiCar- (void) sayHi{NSLog(@”型号%@,价格%@,速度%g”,_carBrand,_carPrice,_carSpeed);}// 对三个成员变量进行统一赋值的赋值语句- (void) setCarBrand:(NSString *)carBrandsetCarPrice:(NSString *)carPricesetCarSpeed:(CGFloat)carSpeed;{_carBrand = carBrand;_carPrice = carPrice;_carSpeed = carSpeed;}// 三个成员变量的设置器- (void) setCarBrand:(NSString *)carBrand{_carBrand = carBrand;}- (void) setCarPrice:(NSString *)carPrice{_carPrice = carPrice;}- (void) setCarSpeed:(NSInteger)carSpeed{_carSpeed = carSpeed;}// 访问器- (NSString *) carBrand{return _carBrand;}- (NSString *) carPrice{return _carPrice;}- (NSInteger) carSpeed{return _carSpeed;}- (id) init{_carSpeed = 200;_carPrice = @”100w”;_carBrand = @”R8″;return self;}- (id) initWithCarBrand:(NSString *)carBrandcarPrice:(NSString *)carPricecarSpeed:(CGFloat)carSpeed;{_carBrand = carBrand;_carSpeed = carSpeed;_carPrice = carPrice;return self;}@end初初尝试着拥抱的人,一派新鲜幸福都来不及沉浸,