封装
对于方法:
1.需要给外部使用的属性和方法放在头文件里面
2.自己私有的方法直接写在实现文件中
3.私有的属性写在实现文件中匿名拓展
@interface Person ()
@property (nonatomic, strong) NSString *password;
@end
对于成员变量:(头文件中)
1.@public 公有的 类自己可以访问,子类可以继承,外部也可以访问 访问方式 hr->name
2.@private 私有的 类自己可以访问,子类无法继承,外部不可以访问
3.@protected 受保护的 类自己可以访问, 子类可以继承, 外部不可以访问。默认。
继承
当工程中或者系统框架里面已经存在某些类,需要在这些类的基础上添加一些方法或者属性,那么可以选择继承,*oc不可多继承
1.术语
父类:要被继承的类
子类:自己定义准备继承于父类的类
根类:所有类的父类
@interface Animal(子) : NSObject(父)
super:不是指向父类的指针,而是一个标识
self:代表当前调用者,隐藏属性
2.类是自动向上装换的
@interface Person : NSObject
- (void)doSomething:(Father *)fa;
@end
Son *s = [[Son alloc] init];
s.name = @"son";
Person *p = [[Person alloc] init];
[p doSomething:s];
需要一个Father类型的参数,但是传递了一个Son类型的参数,自动进行了转换
多态
同一个方法,拥有不同的实现
1. 使用继承的方式实现多态
2. 使用协议的方式来实现多态
定义一个协议
@protocol 协议名 <父协议>
@required 必须实现
@optional 选择实现
@end
使用一个协议
@interface 类名 : 父类<协议名>
@end
原文:http://www.cnblogs.com/huoran1120/p/5066174.html