Наследование реализации интерфейса в Java - PullRequest
3 голосов
/ 24 декабря 2009

У меня есть два вопроса относительно интерфейсов в Java. 1) Если класс реализует все методы интерфейса интерфейса I, не объявляя себя реализующим их, может ли он по-прежнему использоваться в качестве входных данных для переменных типа I? 2) Наследует ли подкласс класса A, который реализует интерфейс I, соответствие этому интерфейсу, или он должен также объявить себя реализующим I?

Ответы [ 3 ]

16 голосов
/ 24 декабря 2009

Если класс реализует все методы интерфейса интерфейса I, без объявления себя как реализуя их, это все еще может быть используется как вход в переменные типа Я

Нет. То, что вы описываете, больше похоже на печать утки .

Имеет ли подкласс класса А, который реализует интерфейс, который я наследую соответствие этому интерфейсу, или если он также объявит себя внедряю я?

Предполагая, что вы имеете в виду:

public class A implements I { /* ... */ }

public class B extends A { /* ... */ }

В этом случае B реализует I.

2 голосов
/ 24 декабря 2009
  1. Если вы имеете в виду «Может ли оно удовлетворять принципу подстановки Лискова?», Ответ «нет».
  2. Класс B соответствует своему родителю и не нуждается в переобъявлении интерфейса.

Лучший способ ответить на подобные вопросы - экспериментировать - попробуйте и посмотрите.

0 голосов
/ 24 декабря 2009
  1. Нет, интерфейсы должны быть явно реализованы.
  2. Интерфейсы, реализуемые базовыми классами, по расширению всегда реализуются производными классами.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...