Junior — Middle
121
¿En qué se diferencia la implementación de métodos en una clase abstracta de la definición de métodos en una interfaz?
Respuesta de la IA
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");
}
}
Ключевые отличия:
- Класс может наследовать только один абстрактный класс, но может реализовывать несколько интерфейсов.
- Абстрактный класс может содержать состояние, интерфейс — нет (только константы).
- Интерфейсы больше ориентированы на контракт, абстрактные классы — на частичную реализацию.