Objective-C学习笔记--继承

 1. 不要直接更改由继承得到的实例变量的值,一定要使用方法来更改它们

2. 只能继承一个

 某些语言(例如C++)具有多重继承特性,在这种情况下,一个类可以直接从两个或多个类继承而来。但Objective-C不支持多继承,如果你尝试在Objective-C中使用多继承,编译器将不能正常识别它们,你可以通过Objective-C的其他特性获取多继承的有点,例如分类和协议

3. 对于方法的定义,使用空正文或者返回一个虚值都是可以的

比如:Shape类的draw方法

-(void) draw

{} //这样Shape的子类都能实现各自不同的方法

4. 创建一个新类时,其对象首先从自身的超类中继承实例变量,然后(可选)添加他们自己的实例变量。

5. super关键字

Objective-C提供某些方式来重写方法,并且仍然调用超类的实现方式。当需要超类实现自身的功能,同时在前面或后面执行某些额外的工作时,这种机制非常有用,为了调用继承方法的实现,需要使用super作为方法调用的目标

@implementation Circle
- (void) setFillColor: (shapeColor) c
{
    if (c == kRedColor) {
        c = kGreenColor;
    }
    [super setFillColor: c];
}
@end

super来自哪里呢?它既不是擦承诺书也不是实例变量,而是由Objective-C编译器提供的某种神奇功能。向super发送消息时,实际上实在请求Objective-C向该类的超类发送消息。如果超类中没有定义消息,Objective-C将按照通常的方式在继承链中继续查找对应的消息。

原文地址:https://www.cnblogs.com/cc-Cheng/p/3317155.html