Если мой класс implements
- интерфейс, то могу ли я сказать, что я следую за наследством? Я знаю, что когда класс extends
другой класс, то это наследование.
java
terminology
interfaces
inheritance
definition
RajeeV VenkaT
источник
источник
Ответы:
ОБНОВЛЕНИЕ: я пересмотрел этот ответ. Ряд положительных моментов был поднят в комментариях, которые заслуживают упоминания.
Не совсем понятно, что вы имеете в виду под «следующим наследованием». Давайте зададим немного другой вопрос?
Это немного разные. Это прискорбно, потому что это сбивает с толку.
Путаница может возникнуть, потому что люди думают о наследовании как о механизме обмена деталями реализации. Хотя это такой механизм, который работает механизм путем обмена членов . Эти члены не должны иметь реализации! Как мы увидим, они могут быть абстрактными.
Лично я был бы счастлив, если бы в спецификациях Java и C # использовалось слово, отличное от «наследует», для описания взаимосвязи между интерфейсными методами и классами, чтобы избежать этой путаницы. Но они этого не делают, и мы должны исходить из спецификаций, а не против них.
Да, некоторые См. Раздел спецификации Java 8.4.8, который я привожу здесь для вашего удобства.
Если вы говорите, что класс реализует интерфейс, тогда класс наследует абстрактные и стандартные методы этого интерфейса . (Конечно, я пропустил следующие условия; подробности см. В спецификации. В частности, класс, который реализует элемент интерфейса, не считается унаследованным этим членом. Опять же, это сбивает с толку? Да.)
Обычно мы бы сказали, что класс реализует интерфейс. Как отмечено выше, класс может наследовать члены от интерфейса, и все же не сказано, что он наследует от интерфейса. Что сбивает с толку, да.
Обычно нет. Этот вид узкого анализа спецификации более полезен для авторов компиляторов, чем для бизнес-разработчиков. Гораздо важнее понять, когда использовать интерфейс, чем получить точное определение «наследует от».
источник
java
так что это правильный ответ, если ОП не означало что-то другоеjava
:-)Наследование означает написание нового подкласса для суперкласса. Написание нового класса для интерфейса реализует этот интерфейс. (А написание нового интерфейса на основе старого расширяет этот интерфейс.)
Единственный правильный термин, который применяется ко всем трем возможностям, это подтип . Не каждый подтип является подклассом.
источник
С подклассами вы
С помощью интерфейсов вы выполняете контракт, реализуя заявленные методы.
Это классический взгляд на это. Теперь с Java 8 интерфейсы становятся смесью:
Будет ли реализация интерфейса, все методы которого имеют реализации по умолчанию, по-прежнему считаться «реализацией» или, скорее, расширением? Я не мог сказать. Так как этот случай довольно надуманный (это фактически позволило использовать множественное наследование без сохранения состояния), я бы по-прежнему использовал «наследование» только с подклассами.
источник