OC继承的特点:
@1. 继承是单向的,不能相互继承。
@2. 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为
@3. OC中只允许单继承
@4. 继承的内容:所有实例变量和方法。
@5. OC中所有的方法(消息),默认都是公有的。
修饰符:
private: 私有成员,不能被外部函数访问(使用),也不能被子类继承;
protected:保护成员,不能被外部函数访问,可以被子类继承;
public: 公有成员,可以被外部函数访问,也可以被子类继承。
注: 默认的权限是 protected。
继承的优缺点:
优点:
@1. 提高代码的复用。
@2. 扩展原有的类。
注意:NSString、NSArray、NSDictionary都是不能够继承的。
缺点:
@1. 破坏了封装性,基类向子类暴露了实现细节 ,白盒重用。
@2. 当父类的实现改变时可能要相应的对子类做出改变
@3. 不能在运行时改变由父类继承来的实现
因此:组合比继承具有更大的灵活性和更稳定的结构,一般情况下应该优先考虑组合.
OC的方法都是虚方法:
1)父类的指针可以指向子类的对象
Person *p = [[Student alloc] init];
此时的p指向子类对象;调用方法时,不看指针,看对象,对象的地址指向什么对象,就调用什么方法,称为虚方法。
2)虚方法的好处:可以描述不同事物被相同事件触发,会产生不同的响应。