В Java ключевое слово extends используется для расширения класса или интерфейса, а ключевое слово implements используется для внедрения интерфейсов в класс. Это основное различие между extends и implements.
Обратите внимание, что extends и implements являются зарезервированными ключевыми словами в Java и не могут использоваться в качестве идентификаторов.
1. Java расширяется
В Java мы можем наследовать поля и методы класса, расширяя его с помощью ключевого слова extends. Обратите внимание, что класс Java может расширять один и только один класс. Java не поддерживает множественное наследование, чтобы избежать проблемы ромба.
public class Child extends Parent {//...}
Интерфейс может расширять другой интерфейс с помощью ключевого слова extends при использовании с интерфейсами.
public interface IChild extends IParent {//...}
Возьмем в пример класс ArrayList. Он расширяет класс AbstractList, который в свою очередь расширяет класс AbstractCollection. Так что по сути класс ArrayList имеет методы и поведение обоих родительских классов.
2. Реализации Java
В Java интерфейсы — это способы принудительного исполнения контракта в классах. Интерфейсы заставляют реализующие классы реализовывать определенное поведение. Чтобы реализовать интерфейс, класс должен использовать ключевое слово implements.
public class WorkerThread implements Runnable {//...}
В Java мы можем реализовать более одного интерфейса. В этом случае класс должен реализовать все методы из всех интерфейсов.(или объявить себя абстрактным ).
Например, класс ArrayList реализует четыре интерфейса, то есть List, RandomAccess, Cloneable и Serializable. Он реализовал все методы из этих интерфейсов.
3. Различия между extends и implements
На основе приведенных выше примеров давайте перечислим различия между ключевыми словами extends и implements в Java.
- Ключевое слово extends используется для наследования класса или интерфейса, а ключевое слово implements используется для реализации интерфейсов.
- Класс может расширять только один класс, но может реализовывать любое количество интерфейсов.
- Подкласс, расширяющий суперкласс, может переопределять некоторые методы из суперкласса. Класс должен реализовывать все методы из интерфейсов.