Противоречит ли наследование принципу инверсии зависимостейJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Противоречит ли наследование принципу инверсии зависимостей

Сообщение Anonymous »

Принцип инверсии зависимостей гласит (Head First Java):
  • Зависит от абстракций. Не зависьте от конкретных классов.
Что это значит в отношении наследования?< /strong> Поскольку подкласс зависит от конкретного класса.

Я прошу случай, когда, скажем, есть интерфейс Bird (у него нет Fly метод, поскольку некоторые птицы не умеют летать), который представляет всех нелетающих птиц. Поэтому я создаю класс NonFlyingBird, который реализует Bird.

Теперь я хочу создать класс для птиц, которые умеют летать. Поскольку NonFlyingBirds и FlyingBirds имеют одинаковые атрибуты, я расширяю FlyingBirds из NonFlyingBirds и реализую Flyable, чтобы придать ему поведение полета.

Разве это не нарушает принцип инверсии зависимостей, поскольку 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 + поведение полета. Поэтому имеет смысл повторно использовать код путем наследования.

Подробнее здесь: https://stackoverflow.com/questions/581 ... -principle
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»