继承有很多好处:
1、多态
2、代码复用
继承的坏处
1、如果继承的层数过多,会造成代码可读性降低,不好调试,不好维护
2、如果一个类中的子类具有不同的行为,比如同属于鸟类,鸵鸟不会飞,而燕子会飞,这样的话,就无法在基类中定义fly()方法了。也就无法多态和代码复用了。
对于第2个坏处,我们可以利用组合+接口的方式来达到多态和代码复用的效果。
interface flyable{
void fly();
}
class TuoNiao implements flyable{
void fly(){
xxxxx
}
}
我们发现上述代码,虽然实现了多态,但是代码不能复用,我们需要在每个类中都写一次fly()的代码
我们可以用组合来进行代码复用
interface Flyable{
void fly();
}
class FlyAbility implements Flyable{
void fly(){
xxx
}
}
class TuoNiao implements flyable{
FlyAbility f = new FlyAbility();
void fly(){
f.fly();
}
}