一、 关于封装
1、封装是对象和类概念的主要特性。它是隐藏内部实现,稳定外部接口,可以看作是“包装”。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
2、好处:使用更加简单 变量更加安全可以隐藏内部实现细节 开发速度加快
OC中一个类可以继承另一个类,被继承的类成为超类(super class),继承的类是子类(child class),可以直接拥有父类中所有非私有成员(相关实例变量)、方法。
二、 set方法和get方法
1. set方法和get方法的使用场合
@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检、水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数
2. set方法
1) 作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值
2) 命名规范:
Ø 方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写
Ø 形参名称不要跟成员变量同名
3. get方法
1) 作用:返回对象内部的成员变量
2) 命名规范:get方法的名称一般就跟成员变量同名
4. 成员变量的命名规范
Ø 成员变量都以下划线 _ 开头
Ø 可以跟get方法的名称区分开
Ø 可以跟其他局部变量区分开,一看到下划线开头的变量,肯定是成员变量
5. 代码示例
#import <Foundation/Foundation.h>
// 声明
@interface Car : NSObject
{
int _wheels; // 轮子个数
}
/*set方法*/
- (void) setWheels:(int)wheels;
/*get方法*/
- (int) wheels;
@end
@implementation Car
// set方法的实现
- (void) setWheels:(int)wheels
{
// 对外面传进来的轮子数进行过滤
if (wheels<=0)
{
wheels = 1;
}
_wheels= wheels;
}
// get方法的实现
- (int) wheels
{
return _wheels;
}
@end
6. 封装的好处
Ø 过滤不合理的值
Ø 屏蔽内部的赋值过程
Ø 让外界不必关注内部的细节
三、 OC的弱语法
Ø 一个没有定义的方法,可编译,链接会有警告,运行时会有这样的错误
Unrecognizedselector sent to instance
Ø 不声明也可以只写实现