OC第二天:实例变量可⻅度、⽅法

时间:2022-12-12 16:16:55

⼀、实例变量可⻅度

实例变量的可⻅度

OC第二天:实例变量可⻅度、⽅法

⼆、⽅法

⽅法分类

OC中的⽅法分两种:类⽅法和实例⽅法。
类⽅法:只能类使⽤,例如:+(id)alloc 注:类⽅法中不能使⽤
实例变量 实例⽅法:只能对象使⽤,例如: -(void)sayHi

OC第二天:实例变量可⻅度、⽅法

⽅法名

删除:类型标识,返回类型,参数类型,参数名,空格。例如: replaceObjectAtIndex:withObject:
类中不能出现同名⽅法。
“ : ” 标识参数,不能省略。有冒号必须有参数。

赋值、取值⽅法

OC第二天:实例变量可⻅度、⽅法

⽅法使⽤

[person sayHi];
在OC中没有”student调⽤sayHi“这种表述。
在OC中使⽤消息发送机制:[receiver message]。
正确表述:给student对象发送sayHi消息。
1、student接收到消息,即⽅法sayHi;
2、student找到sayHi⽅法,并执⾏。

setter、getter

在OC⾥,为实例变量赋值的⽅法称作setter (设置器)。
读取实例变量值的⽅法称作getter(访问器)。
我们之前写的那些赋值取值的⽅法都可以称作setter和getter

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: ⾃定义初始化⽅法,根据需求定义初始化⽅ 法。
OC第二天:实例变量可⻅度、⽅法

#import

导⼊头⽂件,即:导⼊头⽂件中的内容到当前类。
#import “”导⼊⾃定义类,#import <>导⼊类库中的头⽂件。
功能类似C语⾔中的#include,但是可以避免头⽂件被重复导 ⼊。
容易出现循环导⼊头⽂件问题

@class

告诉编译器@class后的字符串作为类名使⽤,并未导⼊类的 接⼝内容。
有效避免嵌套循环导⼊

总结

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

//@Class 关键字告诉编译器 关键字是一个类可以当作一个类去使用避免循环导入头文件
// 如果你要使用这个类的方法还需要再次引用才能使用
// 复合:在本类中声明了一个其他类的对象作为本类的实例变量

//descripion  格式化拼接字符串
// 直接用%@ 打印对象时候实际上是调用了父类的方法名为 descripion 的方法
//如果想按自己意愿 要重写父类的方法