Черты Java-интерфейсов - PullRequest
       14

Черты Java-интерфейсов

1 голос
/ 17 апреля 2011

Скажем, класс2 расширяет другой класс1, а класс2 должен реализовывать определенный интерфейс. Должен ли class1 реализовывать тот же интерфейс, который должен реализовывать class2?

Пример:

public class Mosquito extends Insect implements FlyingThings {
}
  1. Должны ли насекомые реализовывать FlyingThings?
  2. Или подкласс "Москит" может реализовывать класс, который не реализует суперкласс "Насекомое"?

Логично, я бы рассуждал, что в данном примере ответ - нет, потому что насекомое не обязательно летает. Однако, конечно, этот пример может вводить в заблуждение в этом отношении.

В любом случае, я хотел бы заранее поблагодарить вас за ваши ответы.

Ответы [ 2 ]

2 голосов
/ 17 апреля 2011

Вы правы в своих рассуждениях: Class1 не нужно реализовывать интерфейс для Class2 в.

Class2, хотя наследует функциональность и члены Class1, может свободно добавляться или, возможно, изменяться черезпереопределяет любую функциональность (через интерфейсы или иным образом).

0 голосов
/ 17 апреля 2011

Ну, муравьи - это насекомые, и большинство из них не летают.Поэтому муравью было бы неуместно летать.

Далее рассмотрим эту проблему:

Соблазнительно сделать

class FlyingInsect extends Insect

Но когда вы идете, сделайтеКоролева Муравей у вас есть это:

class Ant extends Insect // ants don't fly

class QueenAnt extends Ant // wait she needs to fly though!
class QueenAnt extends FlyingInsect // oh drats, but now she isn't an ant!

Что делает FlyingThing отличным выбором для интерфейса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...