OC中的OOP之 --- 继承

来源:互联网 发布:朝阳区群众 知乎 编辑:程序博客网 时间:2024/05/29 15:42

 “继承”一词对于软件工程师来说并不陌生,当然这里不是指法律上的继承,而是计算机中的继承。继承机制一来可以有效避免重复代码的出现,提高效率,二是模拟人类的继承逻辑符合人的常规逻辑思维,便于软件架构的组织。这里聊聊OC中的继承。
 
继承的语法格式

@interface 类名:继承的类名
上面就是继承的语法格式,冒号后面是需要继承的类。在OC中也可以选择不继承,但如果使用的是Cocoa框架,就需要继承NSObject类,因为它提供了大量有用的特性(当继承一个继承自NSObject类的类时,也可以获取这些特性)。
在C++中可以多继承,即一个类可以继承两个或多个类。但OC不支持多继承,只能单继承,即一个类只能继承自一个类或者不继承,不可继承自两个或两个以上的类。 但是可以通过OC的其他特性比如类别和协议等来达到多继承的效果。
注: 在继承中常用的两对术语是:超类/子类 和 父类/孩子类,超类和父类指的是继承的类,子类和孩子类是执行继承的类。只是表达方式不同。两对术语在交流中用哪一对也行,只是看习惯。

继承的工作机制
1).方法调度
当代码向对象发送要执行某个方法的消息时,OC的方法调度机制将在当前的类中搜索相应的方法。如果无法在接收消息的对象的类文件中找到相应的方法,它就会在该对象的超类中进行查找,直到查找到NSObject类(假如继承NSObject类的话,如果使用Cocoa框架,就要继承NSObject类的),如果在最顶层的NSObject类中也没有找到该方法,则会出现一个运行时错误,同时还会出现一个编译时警告信息。
2).实例变量
这里写图片描述

0 0
原创粉丝点击