问题:Object-C有多继承吗?没有的话用什么代替?Category是什么?重写一个类的方式用继承好还是分类好?为什么?
OC没有多继承,例如下面的代码,肯定必须报错的。
其实OC也有类似java的多继承,就是委托delegate和协议protocol。
protocal协议机制是一种类似java的接口的玩意。定义一组方法,但是不实现,让使用它的类去做实现。任何一个使用它的类只要声明了该协议,都可以实现协议中的方法。
portoco通常和delegate一起使用。delegate委托不是什么机制,只是一种设计模式。
下面举个例子说明。某个同学需要买一本书,所以他就声明了一个叫buybook的协议。但是这个协议由谁来实现呢,他并不关心。然后卖书的商家发现自己有这本书,就实现这个方法。
首先我们看Student的.h和.m文件的实现
#import <F