依赖倒置原则说(Head First Java):
- 依赖于抽象。不要依赖具体的类。
继承权是什么意思?作为子类依赖于具体类。
我问的是一个案例 - 有一个接口Bird
(没有飞行方法,因为有些鸟不能飞),它代表所有非会飞的鸟。所以我创建了一个类 -NonFlyingBird
它实现了Bird
.
现在我想为会飞的鸟做一个课程。由于NonFlyingBirds
和FlyingBirds
具有相同的属性,我扩展了FlyingBirds
fromNonFlyingBirds
和 ImplementFlyable
以赋予它飞行行为。
难道它不会破坏FlyingBirds
从具体类扩展的依赖倒置原则NonFlyingBirds
吗?
interface Bird { // Represents non Flying birds
void getColor();
void getHeight();
...
}
class NonFlyingBird implements Bird {
void getColor();
void getHeight();
...
}
class FlyingBird extends NonFlyingBird implements Flyable { // Does it break Dependency Inversion principle by extending concrete NonFlyingBird class?
Flyable fly;
...
}
注意 - 我扩展的唯一原因是因为它具有与+ 飞行行为FlyingBird
相同的属性和方法。NonFlyingBird
所以通过继承重用代码是有意义的。