В Java каждый метод в интерфейсе неявно абстрактно. Но когда хотя бы один метод в классе является абстрактным, это означает, что этот класс является абстрактным. Означает ли это, что каждый интерфейс является абстрактным классом?Java - Является ли каждый интерфейс абстрактным классом?
ответ
Я думаю, каким-то образом, да. Номер abstract class
может использоваться как interface
.
Вопрос в том, что class
может только extends
на другом class
. Класс может implements
любое количество interface
s.
Так что, хотя abstract class
es похожи на interface
s, они очень разные в реальности.
Означает ли это, что каждый интерфейс является абстрактным классом?
№ Интерфейс (на Java 7 и более ранних версиях) не может иметь никаких реализаций методов и не может определять никаких полей экземпляра. Абстрактный класс может выполнять оба. Это лишь некоторые из существенных различий.
Но если хотя бы один метод в классе является абстрактным.
Но это не класс, его интерфейс.
Вместо этого вы можете сказать, что это абстрактный интерфейс.
И наконец: Интерфейс является абстрактным по определению.
Да, когда я декомпилировал интерфейс, у него был публичный абстрактный интерфейс модификатора, и по определению они должны быть абстрактными, чтобы содержать абстрактные методы.
абстрактный интерфейс не совпадает с абстрактным классом. –
Это подробно объяснено и подробно описано в возможном вопросе о дублировании. –
@LuiggiMendoza ах да, извините. Не заметил, что один - проголосовал за закрытие, как дуп. –