8-继承

前几章参考:

1-引言

2-Objective-C 编程

3-类、对象和方法

4-数据类型和表达式

5-循环结构

6-选择结构

7-类


一切从根类开始:

没有父类的类,位于类层次结构的最顶层,称为根(Root)类。NSObject是层次结构的最顶端(也就是它上面没有任何类),因此称为根类。

如果使用术语,可以将类称为子类和父类。同样,也可以将类称为子类和超类。

需要注意的是,要在子类中直接使用实例变量,必须先在接口部分声明。在实现部分声明和合成(synthesize)的实例变量是私有的,子类中并不能够直接访问,需要明确定义或合成取值方法,才能访问实例变量的值。


继承的概念作用于整个继承链。

一定要理解以下事实:类的每个实例都拥有自己的实例变量,即使这些实例变量是继承来的。


找出正确的方法:

首先,检查该对象所属的类,以查看在该类中是否明确定义了一个具有指定名称的方法。如果有,就使用这个方法。如果没有定义,就检查它的父类。如果父类中有定义,就使用这个方法,否者,继续找寻。知道找到根类也没有发现任何方法。


通过继承来扩展:添加新方法

继承通常用于扩展一个类。


@class指令:

@class XYPoint;

#import "XYPoint.h"

使用@class指令提高了效率,因为编译器不需要引入和处理整个XYPoint.h文件(虽然它很小),只需要知道XYPoint是一个类名。如果需要引用XYPoint类的方法(在实现部分中),@class指令是不够的,因为编译器需要更多的消息。

说的通俗点:只引用了类就用@class不然就用#import。

在默认情况下,合成的设值方法只是简单地复制对象指针,而不是对象本身。你可以合成另一种设值方法,而不是制作对象的副本。


覆写方法:

不能通过继承删除或减少方法。但可以利用覆写来更改继承方法的定义。

新方法必须具有相同的返回类型,并且参数的数目与覆写的方法相同。

如果在不同的类中有名称相同的方法,则根据作为消息的接收者的类选择正确的方法。


为什么要创建子类?有如下3个理由:

1)希望继承一个类的方法,也许加入一些新的方法和或实例变量。

2)希望创建一个类的特别的版本。

3)希望通过覆写一个或多个方法来改变类的默认行为。


抽象类:

有时,创建类只是为了更容易创建子类。因此,这些类名为抽象(abstract)类,或等价地称为抽象超类(abstract superclasses)。在该类中定义方法和实例变量,但不期望任何人从该类创建实例。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值