Проверяет понимание различий между наследованием класса и реализацией интерфейса, что важно для проектирования гибкой архитектуры.
В объектно-ориентированном программировании extends и implements решают разные задачи. extends выражает отношение «является» (is-a) и позволяет переиспользовать код родительского класса. implements выражает отношение «умеет» (can-do) и задаёт контракт, которому класс обязан соответствовать.
Класс-наследник получает доступ к public и protected членам родителя, может переопределять методы и вызывать родительскую реализацию через super. Ограничение: в большинстве языков (Java, C#, Kotlin) поддерживается только одиночное наследование классов.
class Animal {
void speak() { System.out.println("..."); }
}
class Dog extends Animal {
@Override
void speak() { System.out.println("Woof"); }
}Интерфейс описывает набор методов без реализации (в классическом виде). Класс, указавший implements, обязан реализовать все методы интерфейса. Один класс может реализовать несколько интерфейсов, что даёт гибкость и множественное «поведенческое» наследование.
interface Swimmable {
void swim();
}
interface Flyable {
void fly();
}
class Duck extends Animal implements Swimmable, Flyable {
public void swim() { System.out.println("Swim"); }
public void fly() { System.out.println("Fly"); }
}Итог: extends применяйте, когда нужна общая реализация и иерархия типов; implements — когда нужно задать контракт и обеспечить гибкость через полиморфизм и множественную реализацию.
Уровень
Рейтинг:
5
Сложность:
3
Навыки
Java
Spring
Ключевые слова
Подпишись на Node.js Developer в телеграм