黑马程序员技术交流社区

标题: 关于OC中的组合? [打印本页]

作者: 冯立柱    时间: 2015-1-13 12:37
标题: 关于OC中的组合?
在OC视频中,讲到继承时,当A类完全拥有B类中的部分属性和方法时可以考虑B类继承A类,但根据逻辑关系的不同,有时不使用继承,而使用组合,写做
A *_a;,谁能帮我解释下,A *_a;是什么意思,是创建了一个指针吗?在内存中是怎么表现的?为什么这么写呢?

作者: haojuncong    时间: 2015-1-13 12:48
就是a属于b的意思吧,比如,我有一本书,书就不能继承人
作者: 冯立柱    时间: 2015-1-13 12:50
意思我知道,我只是不明白,为什么组合要写成这样A*_a;这是个指针吗?那他指向哪里;为什么指向那里,就能实现组合关系?
作者: woaiwomama    时间: 2015-1-13 12:53
我也不清楚这是为什么。
作者: mengxingdong    时间: 2015-1-13 13:08
A *_a 是声明一个类型为A的指针变量,就是在栈空间创建一个空间存这个指针(参加:int)当给对象a属性赋值时,就是把赋值对象的地址给a
作者: 冯立柱    时间: 2015-1-13 14:46
谢谢各位,我搞明白了。其实组合就是相当于将A类型的对象,作为B类的成员变量使用。在B类型中创建一个指针,指向A类型的对象。  应该是这个意思吧。
作者: 晓风_残月    时间: 2015-1-13 14:52
在B类中写A *_a 是B类包含A类的一个指针引用,这样B就可以访问到A类当中的非私有的成员变量和函数。
而继承也是可以直接访问父类的非私有的成员变量和函数,不过继承可以重写父类的函数,但是耦合性就很高了,在开发当中要 遵循 多组合,少继承的原则。维护起来比较方便。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2