组合和继承之间的区别
组合和继承之间的区别
什么是组合
组合
组合是通过对现有对象进行拼装即组合产生新的具有更复杂的功能。
像汽车组装一样,将代码组装,向Spring中的注入,让代码交织在一起,而其本身并没有必然联系。
什么是继承
继承
继承是面向对象三大特征之一,java中的继承描述的是两个类之间的关系,被继承的类称为父类,继承的类成为子类
继承使用关键字extends关键字来描述。在java里面只支持单继承及一个类只能有一个父类,子类可以继承的非private修饰的成员方法和成员变量,构造方法不能被继承,java中的继承和生活中的继承颇为相似,现实生活中一个儿子只能有一个父亲,儿子可以继承父亲的房子车子但是不能继承父亲打闹里面的思想和知识。
在代码的角度上看,就是一个将会被很多类使用的方法,那么就可以让他作为一个父类。
组合和继承之间的区别
继承与组合都是面向对象中代码复用的方式。父类的内部细节对子类可见,其代码属于白盒式的复用,而组合中,对象之间的内部细节不可见,其代码属于黑盒式复用。继承在编码过程中就要指定具体的父类,其关系在编译期就确定,而组合的关系一般在运行时确定。继承强调的是is-a的关系,而组合强调的是has-a的关系。