进击的程序猿

实例变量可见度可见度:

可见度 特点

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初初尝试着拥抱的人,一派新鲜幸福都来不及沉浸,

进击的程序猿

相关文章:

你感兴趣的文章:

标签云: