继承建模 is-a/like-a。
组合建模 has-a
组合建模 has-a
解决方案 »
- Chilkat是什么东西?编译时出现软件包 com.chilkatsoft不存在怎么解决
- 两个String[][]数组的比较
- 关于GUI的题,帮帮我谢谢
- 关于JDK的问题,求救高手!!
- 关于JAVA GUI在Windows系统中的刷新问题
- 使用java处理图形文件的问题
- 如何中断URLConnection.openConnection()方法的执行?
- table中有一列数据为Double类型,如何在显示时使此列截取3位小数?
- 一个菜鸟的问题:Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
- 菜鸟问题:装上了jdk1.2,如何配置环境?
- 初学者请教怎么培养编程思想
- 代码疑问
虽然继承常被人提起,但是我们应该尽量避免使用它,而是用组合替代之
用继承与否有一个界限:
就是当你必须要使用向上转型时才需要用继承
其中向上转型就是子类向父类的转型,例如:
package pk;class Base {
}public class Inhiretance extends Base {
public static void getInh(Base base) {
}
public static void main(String[] args) {
Inhiretance ih = new Inhiretance();
getInh(ih);
}
}
如果你觉得这种用法是不必要的,那你就应该考虑用组合了,因为那是一种更加简单,不容易出错的东西
组合就是在一个类将另一个类作为成员变量。
+1,而且感觉这俩东西根本不能相提并论,至少C++里也可以弄出组合这种东西,但貌似根本没有将这个概念特别提出来,甚至还弄个术语将其与继承相提并论的,不知道为啥java里非要弄个组合这个术语出来。
我觉得继承是依据面向对象弄出来的,而且有编程语言的语法所支持,这组合就是种逻辑关系罢了,就算是C语言这种面向过程语言,仅靠结构体也能搞个组合了。