В чем разница между следующими ключевыми словами в Java: implements
, extends
?
Какая разница между реализациями и расширением ключевых слов в Java
Ответ 1
An interface
представляет собой абстрактную спецификацию того, как должен вести себя class
, тогда как class
является конкретной реализацией такой спецификации.
Поэтому, когда вы пишете implements
, вы говорите, что выполняете абстрактную спецификацию в написанной вами реализации.
extends
означает, что вы берете либо реализацию (class
), либо спецификацию (interface
) и добавляете к ней различные или новые функции (или изменяете спецификацию ее поведения), тем самым изменяя ее поведение и расширяя.
Ответ 2
класс расширяет другой класс и реализует интерфейс. интерфейс расширяет другой интерфейс.
Интерфейс не имеет каких-либо реализованных методов, все определенные методы пустые, поэтому, если класс наследует от интерфейса, он должен реализовать его методы. Но если Class1 наследуется от Class2, то у него уже есть некоторые рабочие методы (из класса 2) и просто extends Class2.