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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 权跃杰 中级黑马   /  2012-8-1 19:50  /  1152 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

无论是合成还是继承,都允许将子对象致于自己的新类中,它们有什么差别吗?我们该选择哪种?

3 个回复

倒序浏览
本帖最后由 焦晨光 于 2012-8-1 20:30 编辑

楼主应该问的是组合和继承的区别吧
组合:简单来说就是在新的类中产生现有类的对象,它是复用现有程序代码的功能,一般用(has-a)即有一个的关系来表示。
例如:手是人的一部分,耳朵、眼睛、鼻子都是人的一部分。是拥有关系
组合:
class 人{
//.....
}
class 手{
  人 手;
}

继承:按照现有的类来创建新类,一般用(is-a)即是一个的关系来表示。
例如:苹果 香蕉 梨 等都是属于水果类,它们都是水果类里的一个实例,是属于关系;
class 水果{
//.....
}
class 苹果 extends 水果{
//.....
}

到底是该用组合还是用继承,一个最清晰的判断方法就是问一问自己是否需要从新类向上转型。
如果必须向上转型,则继承是必要的;但如果不需要,则应该好好考虑自己是否需要继承。

毕老师的视频里讲的很清楚
回复 使用道具 举报
哦,我在仔细看看,不好搞清关系,有点抽象!
回复 使用道具 举报
问题已解决了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马