objective C不能像C++一样支持多继承
C++的多继承下派生类的定义格式如下:
class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,…
{
<派生类类体>
};
其中,<继承方式1>,<继承方式2>,…是三种继承方式:public、private、protected之一。例如:
class A
{
…
};
class B
{
…
};
class C : public A, public B
{
…
};
其中,派生类C具有两个基类(类A和类B),因此,类C是多继承的,这点和oc是不一样的。按照继承的规定,派生类C的成员包含了基类A, B中成员以及该类本身的成员。
但是在OC的使用经常会碰到需要使用多继承的情况。例如,ClassA中有methodA,ClassB中methodB,而现在需要使用这两个类中的方法。如何按照C++的编程思路,毫无疑问采用多继承就搞定了,但是OC中就不行了,需要用其他途径来实现。
其实我们在学习设计模式的时候知道,多继承的效率不高,而且采用组合的模式可以完全代替继承模式。那么,这种思路完全可以用在OC中实现多继承(或许OC抛弃多继承,就是强迫我们使用更高效的组合设计模式吧!)。
OC中实现可以用以下几种方式实现多继承:
1.消息转发
2.协议
3.代理
4.强制转换
5.类别
6.组合模式
Demo:https://github.com/kinsen17/OCMultipleInheritance.git