A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程序猿-2014 中级黑马   /  2014-4-16 23:21  /  1448 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

继承的定义式XXXX  是  XXXXX    组合是  XXXX 拥有 XXXXX   我想问下在一个类中能够同时使用继承   和组合两种方法么 ?   比如说学生是人而且拥有书

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

5 个回复

倒序浏览
必须可以,这个不冲突的。

评分

参与人数 1黑马币 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
       这个当然可以,继承是符合逻辑的,可以这么解释,学生是人的一种,学生拥有人的所有的属性,所以学生类可以继承人类的全部属性和方法,这就是继承,继承的坏处就是耦合性太强了。

      而组合是,学生拥有成绩,如c语言成绩,英语成绩属性,而且成绩类也拥有这些属性,但是,不能说学生是成绩的一种,可以说学生拥有成绩,这时候使用组合。

    你上面说的学生是人而且有书可以,继承和组合可以一块使用,但是不可以某一个类即继承一个类,又有拥有这个类
回复 使用道具 举报
举个最常见的例子
Person.h里
#import "Book.h"
#interface Person : NSObject
#property (nonatomic, assign) Book *book;
#end

这个例子里,person和book就是组合,person和nsobject继承

评分

参与人数 1黑马币 +2 收起 理由
jing迪 + 2

查看全部评分

回复 使用道具 举报
记住这个就行了,继承是 is a  解释:is a 就是某个东西是什么,举个例子:学生是人,这是继承 组合是 has a  解释:has a 是某个东西拥有什么,举个例子:人有两个胳膊,两条腿,这就是组合。

评分

参与人数 1黑马币 +2 收起 理由
jing迪 + 2

查看全部评分

回复 使用道具 举报
可以把,比如,student继承person ,同事student 有一个成员变量,book类,
只要记住单继承就可以了。成员变量可以是多个类。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马