《Objective-C基础教程》第四章 继承
2015-08-07 13:04
381 查看
处理对象和类的关系时,尤其要注意OPP的两个方面:继承(inheritance)和符合(composition)。
1、使用继承可以定义一个具有父类所有功能的新类,即它继承了父类的所有功能
2、使用复合可以在对象中引用其他对象
4.1 为何使用继承
编程时出现重复的内容常常意味着这事一个失败的架构(修改代码时需要修改多处),使用继承将所有重复的内容合并在一处。
4.2 继承的语法格式
如果使用Cocoa框架,就需要继承NSObject类(它提供了大量有用的特性)。还记得checklists中的尖括号吗,里面的是协议。
注意,Objective-C不支持多继承,但可以通过类别或者协议等来达到多继承的效果。
有关术语:
超类(superclass)是继承的类,例如Circle的超类是Shape
父类(parent class),例如Circle的父类是Shape
子类(subclass)执行继承的类,Circle是Shape的子类
孩子类(child class),Circle是Shape的孩子类
重写(override),改变父类中方法的实现,需要重写继承的方法。
注:超类与子类成对,父类与孩子类成对,只是表达方式不同而已
在向子类发送消息时,跳读程序先查询子类中的代码是否能够响应该消息,如果不能,将在超类中寻找响应的方法并实现。
4.3.2 实例变量
创建一个新类时,其对象会从它的超类继承实例变量,然后根据自身情况添加自己的实例变量
super 关键字
为了调用继承的方法在父类中的实现,需要使用super作为方法调用的目标
向super发送消息时,实际上是在请求Objective-C向超类发送消息。如果超类中没有定义该消息,继续在上一级中查找
1、使用继承可以定义一个具有父类所有功能的新类,即它继承了父类的所有功能
2、使用复合可以在对象中引用其他对象
4.1 为何使用继承
编程时出现重复的内容常常意味着这事一个失败的架构(修改代码时需要修改多处),使用继承将所有重复的内容合并在一处。
4.2 继承的语法格式
@interface Circle:NSObject//NSObject就是需要继承的类
如果使用Cocoa框架,就需要继承NSObject类(它提供了大量有用的特性)。还记得checklists中的尖括号吗,里面的是协议。
注意,Objective-C不支持多继承,但可以通过类别或者协议等来达到多继承的效果。
有关术语:
超类(superclass)是继承的类,例如Circle的超类是Shape
父类(parent class),例如Circle的父类是Shape
子类(subclass)执行继承的类,Circle是Shape的子类
孩子类(child class),Circle是Shape的孩子类
重写(override),改变父类中方法的实现,需要重写继承的方法。
注:超类与子类成对,父类与孩子类成对,只是表达方式不同而已
4.3 继承的工作机制
4.3.1 方法调度在向子类发送消息时,跳读程序先查询子类中的代码是否能够响应该消息,如果不能,将在超类中寻找响应的方法并实现。
4.3.2 实例变量
创建一个新类时,其对象会从它的超类继承实例变量,然后根据自身情况添加自己的实例变量
4.4 重写方法
重写方法:当向子类发送消息时,将调用重写后的方法,而忽略超类中定义的方法super 关键字
为了调用继承的方法在父类中的实现,需要使用super作为方法调用的目标
向super发送消息时,实际上是在请求Objective-C向超类发送消息。如果超类中没有定义该消息,继续在上一级中查找
4.5 小结
相关文章推荐
- object-c 不定参数的遍历和原理
- Swift和Objective-C混合编程——OC调用Swift
- *Delphi控件之---UpDown以及其与TEdit的配合使用(比如限制TEdit只能输入数字,还有Object Inspector之组件属性的介绍)
- 使用JMS发送和接收text和Object类型的消息
- Linq to object 技巧、用法集锦
- Swift和Objective-C混合编程——Swift调用OC
- objective-c 中随机数的用法 (3种:arc4random() 、random()、CCRANDOM_0_1() )
- Objective-C基础语法快速入门
- 用 Objective-C 编程:定义一个类
- Objective-C基调(4)Category
- Object 体系结构常用方法
- C++对象模型——对象成员的效率 (Object Member Efficiency)(第三章)
- The constructor SimpleAdapter(new View.OnClickListener(){}, List<Map<String,Object>>, ..的解决方法
- Objective-C—— Block
- Objective-C设计模式——单例Singleton(对象创建)
- Object..values可变参数列表,可理解为object[]数组类型
- "Optimize Game Objects" in ModelImporter inspector
- 《Objective-C基础教程》第3章 面向对象编程的基础知识
- Objective-C特性:Runtime
- Objective-C Runtime 运行时之六:拾遗