Junior — Middle
118
Wat is het verschil tussen het implementeren van methoden in een abstracte klasse en het definiëren van methoden in een interface?
Antwoord van AI
sobes.tech AI
Основные отличия между реализацией методов в абстрактном классе и определением методов в интерфейсе в Java:
- Абстрактный класс может содержать как абстрактные методы (без реализации), так и методы с реализацией. Он может иметь состояние (поля).
- Интерфейс до Java 8 мог содержать только объявления методов без реализации. Начиная с Java 8, интерфейсы могут содержать методы с реализацией по умолчанию (
defaultметоды) и статические методы.
Пример абстрактного класса:
public abstract class Animal {
public abstract void makeSound();
public void breathe() {
System.out.println("Breathing");
}
}
Пример интерфейса с методом по умолчанию:
public interface Animal {
void makeSound();
default void breathe() {
System.out.println("Breathing");
}
}
Ключевые отличия:
- Класс может наследовать только один абстрактный класс, но может реализовывать несколько интерфейсов.
- Абстрактный класс может содержать состояние, интерфейс — нет (только константы).
- Интерфейсы больше ориентированы на контракт, абстрактные классы — на частичную реализацию.