java的组合与继承

来源:互联网 发布:程序员属于什么行业 编辑:程序博客网 时间:2024/06/04 19:44

java代码的神奇之处就在于代码的复用性,当然写成通用类是需要大量的经验积累与设计技巧的。
java代码之间的关系存在着is-a(是一个),还有has-a(有一个),两者之间的差别就是is-a可以使用继承,has-a尽量使用组合。

java的组合是在开发新类的过程中使用现有类的方法,避免重复代码,带来不好的就是不能再新类的里面去修改他,只能使用。java的继承,是在开发新类的过程中使用现有类的接口方法,你既可以使用父类的方法,也可以覆盖重写父类的方法,继承是java的基石。

当然继承要慎用,只用在需要向上转型的过程才会使用继承,比如,狗类向上转型为动物类,继承更适用于基类的存在,我们在创建类的时候,都隐式的使用了继承Object类了。

is-a代表的是继承的关系,比如电脑与电脑工作站,都是属于计算机,那么就是可以使用继承的,如果A是B,那么B就是A的基类。

has-a代表的是组合的关系,比如cpu 、硬盘,这些类在一起是可以组成计算机,总不能cpu继承计算吧,不合理了。

现在更多的是强调继承,好像处处都想到继承,其实,组合更加的灵活,应首先考虑组合。