编写高质量代码-OC 第6章 继承与面向对象设计
41、明确isa在继承上的作用
- 1、在Objective-C中,每个对象都隐藏着一个数据结构isa指针
- 2、isa指针指向的是对象的类,这个类也是一个对象,有自己的权。
- 3、在Objective—C中,每个对象还都保留一个超类的指针,通过该指针可调度自己已有的方法和调度基类。
42、利用类别和协议实现类似多重继承的机制
- 1、类别,实现了类的相关方法的模块化,把不同的类方法分配到不同的分列文件中。
- 2、类别可以重载原始类的方法,但不推荐这么做,这么做得后果是再也不呢过访问原来的方法,如果确实要重载,正确的选择是创建子类。
- 3、和普通接口有所区别的是,类别的实现文件中可以不必实现所有声明的方法,只要不去调用它。
- 4、协议就是一系列不属于任何累的方法列表,其中声明的方法可以被任何类实现。协议(Protocol)并不是真正的类,它只能声明方法,不能添加数据。
43、类别和类扩展是类继承的延续性扩展。
44、继承基类的实现行为勿忘调用super。
- 1、调用基类方式,以使用该类提供的服务。
- 2、覆盖基类的方法,以便将自己的代码引入到定义的程序模型中。
- 3、如果打算补充基类实现的行为,请调用super。
- 4、如果打算替换基类实现的行为,就不要调用super。