实例变量可见度
可见度:
可见度 | 特点 |
---|---|
public(公有的) | 在类的内外部都可以操作 |
protected(系统默认,受保护的) | 只能在类和子类中操作 |
private(私有的) | 只能在该类内访问 |
{
@public
NSString *_perName;
NSString *_perSex;
@protected
NSInteger _perAge;
@private
NSString *_perHobby;
}
- 一般不使用@public,原因如下
- 容易暴漏类内部的细节
- 不符合”封装的特性”
方法
方法分类
OC中的方法可以分为两种
- 类方法 如:+(id)alloc
- 实例方法 如:-(void)sayHi
注意:类方法中不能使用实例变量,且只能类使用. 实例方法只能对象使用
- (void) setStuName:(NSString *) stuName
其中
- “-“为方法类型表示符,类方法为”+”
- (void)为返回类型
- setStuName为参数形容词
- (NSString *)为参数的类型
- stuName 为参数名
方法名就是方法语句去掉类型表示,返回类型,参数类型,参数名以及空格所剩的部分
即为setStuName:
注意:类中不能出现同名方法.”:”为标示参数,不可以省略,有冒号必须有参数
setter,getter
对实例变量赋值或者取值的时候使用
赋值方法:setter,为设置器
读取实例变量值的方法:getter,为访问器
赋值语句:当对多个语句进行操作的时候,称为赋值语句
Person.h
// 设置器
- (void) setPerName:(NSString *)perName
{
_perName = perName;
}
// 访问器
- (NSString *)perName
{
return _perName;
}
// 赋值语句
- (void) setPerName:(NSString *)perName
setPerSex:(NSString *)perHobby;
Person.m
// 设置器
- (void) setPerName:(NSString *)perName
{
_perName = perName;
}
// 访问器
- (NSString *)perName
{
return _perName;
}
// 赋值语句
- (void) setPerName:(NSString *)perName
setPerSex:(NSString *)perHobby;
{
_perName = perName;
_perHobby= perHobby;
}
注意
如果写声明但是没实现,会在.m文件中出现警告,告诉我们应该把方法补全
无论setter 还是 getter 的内部操作的是实例变量
每一个实例变量都需要一对的setter和getter方法
方法使用
当我们想调用方法时,使用
[person sayHi]
即为消息机制,对应的就是
[消息的接收者 具体要做的事]
自定义初始化方法
- -(id)init 一般的初始化方法只能给变量设置默认值,不灵活
- -(id)initWithName: 自定义初始化方法,可以根据需求来定义
.h