Sobes.tech
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");
    }
}

Ключевые отличия:

  • Класс может наследовать только один абстрактный класс, но может реализовывать несколько интерфейсов.
  • Абстрактный класс может содержать состояние, интерфейс — нет (только константы).
  • Интерфейсы больше ориентированы на контракт, абстрактные классы — на частичную реализацию.