黑马程序员技术交流社区
标题:
不明白的地方
[打印本页]
作者:
权跃杰
时间:
2012-8-1 19:50
标题:
不明白的地方
无论是合成还是继承,都允许将子对象致于自己的新类中,它们有什么差别吗?我们该选择哪种?
作者:
焦晨光
时间:
2012-8-1 20:16
本帖最后由 焦晨光 于 2012-8-1 20:30 编辑
楼主应该问的是组合和继承的区别吧
组合:简单来说就是在新的类中产生现有类的对象,它是复用现有程序代码的功能,一般用(has-a)即有一个的关系来表示。
例如:手是人的一部分,耳朵、眼睛、鼻子都是人的一部分。是拥有关系
组合:
class 人{
//.....
}
class 手{
人 手;
}
继承:按照现有的类来创建新类,一般用(is-a)即是一个的关系来表示。
例如:苹果 香蕉 梨 等都是属于水果类,它们都是水果类里的一个实例,是属于关系;
class 水果{
//.....
}
class 苹果 extends 水果{
//.....
}
到底是该用组合还是用继承,一个最清晰的判断方法就是问一问自己是否需要从新类向上转型。
如果必须向上转型,则继承是必要的;但如果不需要,则应该好好考虑自己是否需要继承。
毕老师的视频里讲的很清楚
作者:
权跃杰
时间:
2012-8-1 21:10
哦,我在仔细看看,不好搞清关系,有点抽象!
作者:
权跃杰
时间:
2012-8-1 21:10
问题已解决了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2