Objective-C基础教程学习笔记(四)继承

编写面向对象的程序时,所创建的类和对象之间存在一定的关系。它们协同工作才能实现程序相应的功能。

处理类和对象间的关系时,尤其要重视OOP的两个方面。第一方面是继承。创建一个新类时,通常需要定义新类以区别于其它类及现有类。使用继承可以定义具有父类所有功能的新类,它继承了父类的这些功能。

另一个和类有关的OOP技术是复合(composition)。在复合中,对象可以引用其它对象。例如,游戏过程中,赛车模拟程序中的汽车对象有4个轮胎对象。对象引用其它对象时,可以利用其它对象提供的特性,这就是复合。

 

为何使用继承

对于一些类接口非常类似,含有大量的重复的内容,会影响程序的执行效率。进行编程时,出现这样的重复内容就表明它是一个不好的架构。你需要维护两倍的代码,个性代码时,必须在两处或多处修改,这将大大增加出错的可能性。如果忘记更改某处的代码,有可能出现一些奇怪的bug。

如果能将所有重复的内容在一个地方统一就太好了!如果我们还能在需要的地方添加自定义的方法,那就更好了。继承恰好是实现该功能的强大OOP特性。OOP继承表明一个类从另一个类(它的父类或超类)中获取了某些特性。

 

继承语法

@interface Circle:NSObject

冒号后的标识符是需要继承的类。在Objective-C中,可以从非类中继承对象,但是如果使用Cocoa,会希望从NSObject继承对象,因为NSObject提供了大量有用的特性。

 

只能继承一个

Objective-C不支持多继承。可以通过Objective-C其它特性获取多继承的优点,例如分类(第12章)和协议(第13章)。

 

超类/父类、 子类/孩子类

子类可重写超类的方法。

 

 

继承的工作机制

方法调度

当代码发送消息时,Objective-C的方法调度程序将在当前类中搜索相应的方法。如果调度程序无法在接收消息的对象类中找到相应的方法,它就在该对象的超类中进行查找。

实例变量

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

 

super 关键字

使用超类的特性,使用super。

posted @ 2012-10-08 17:04  TQ.CH  阅读(238)  评论(0编辑  收藏  举报