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将按照通常的方式在继承链中继续查找对应的消息。