继承是指一个对象直接使用另一对象的属性和方法(具体参考0基础C语言开发)。继承有两缺点:
(1)当层级越来越多时,假如每个层级都有实例变量,那么最下层的子类继承的实例变量会超级多,沉重;
(2)当消息传递自子类往上时,层级越多,效率越低下。
所以就有了组合。说实话区分继承和组合真不是那么容易。所谓两者是“is a"关系则是继承,两者是"has a"则是组合,还是模糊。其实,这两个概念无须区分十分明显,只需要记住:
a)组合和继承实现的功能差不多,但是实现的形式不一样,记住各自的形式即 可;
b)尽量用组合。
下 面举个例子,我们先创建一个ASPoint类,记录x和y坐标值。然后再创建一个ASRectangle类,记录这个长方形在坐标轴上得左下角坐标以及宽 和高,这里面的左下角坐标就可以用ASPoint类的一个对象来表示,所以说ASPoint类的一个对象是ASRectangle组合的一个部分。
(1)ASPoint.h
(2)ASPoint.m
(3)ASRectangle.h
(4)ASRectangle.m
(5)main.m
(6)结果:输出x和y坐标值
//就是创建这个对象时初始化赋的值
20,20
更多编程语言教程可登陆e良师益友网学习。