进击的KFC:OC(二)实例变量可见度、方法、setter、getter

来源:互联网 发布:大q吧数据 编辑:程序博客网 时间:2024/05/18 00:58

(一)实例变量可见度
可⻅度 特点
public(公有的) 实例变量可以在类的外部和内部操作
protected(受保护的默认的) 实例变量只能在该类和其⼦类内 操作
private(私有的) 实例对象只能在该类内访问
所谓的内部,指的是相应类的@implementation 和@end之间
⽰例:
@interface Person : NSObject
{
@public
NSString *_hobby; //兴趣
@protected
NSString *_name; //姓名
int _age; //年龄
@private
NSString *_sex; //性别
}
@public下的可见度,在mian方法中,实例变量可以访问
Person * p = [[Person alloc] init];
p -> _hobby = @“听⾳乐、看电影”;
NSLog(@”⼈的兴趣:%@”,p -> _hobby);
@protected下的可见度,在main方法中,实例变量不可访问

这里写图片描述
@private下的可见度,在main方法中,实例变量
这里写图片描述
思考:
为什么不使⽤@public?
1、使⽤@public关键字,暴露了类内部的细节。
2、不符合⾯向对象语⾔的三⼤特性之⼀ — 封装
如何在其他⽂件中访问对象@protected修饰的实例变量?
例如:如何在mian.m⽂件中设置p的_name,读取p的_name。
提⽰:添加两个⽅法。
赋值:通过⽅法传⼊参数,在类的内部实现实例变量赋值。
取值:通过⽅法获取实例变量的值

(二)方法
OC中方法分为两种:类方法 和 实例方法
类⽅法:只能类使⽤,例如:+(id)alloc 注:类⽅法中不能使⽤
实例变量
实例⽅法:只能对象使⽤,例如: -(void)sayHi
方法的声明:
这里写图片描述
方法名:
删除:类型标识,返回类型,参数类型,参数名,空格。例如:
replaceObjectAtIndex:withObject:
类中不能出现同名⽅法。
“ : ” 标识参数,不能省略。有冒号必须有参数。

赋值、取值⽅法 set get 方法
这里写图片描述
在OC⾥,为实例变量赋值的⽅法称作setter (设置器)。
读取实例变量值的⽅法称作getter(访问器)。
我们之前写的那些赋值取值的⽅法都可以称作setter和getter。
OC⾥规定了setter和getter的书写格式。
如果⼀个实例变量是int age;或者int _age;
setter的书写格式如下:- (void)setAge:(int)age;即set+⾸字⺟⼤
写的实例变量名(忽略下划线)。
getter的书写格式如下: - (int)age;即返回值类型与变量类型⼀
致,⽅法名与实例变量名相同(忽略下划线)

(三)总结:
实例变量有3种常⻅的可⻅度:@public、@protected、@private。
@public违背了封装特性,⾯向对象开发中很少使⽤;@protected默
认可⻅度,⾃⼰和⼦类中能使⽤—>访问实例变量;@private⾃⼰类
中能使⽤—>访问实例变量。
⽅法是OC的核⼼,采⽤消息机制:[receiver message]。
“-”message由对象来调⽤;“+”message由类来调⽤。

0 0
原创粉丝点击