Sobes.tech
Назад к вопросам
Junior — Middle
65

Каким образом можно различить абстрактный класс и интерфейс в объектно-ориентированном программировании?

Ответ от нейросети

sobes.tech AI

Абстрактный класс и интерфейс — оба служат для определения контрактов в ООП, но имеют отличия:

  • Абстрактный класс может содержать как абстрактные методы (без реализации), так и методы с реализацией, а также поля. Класс может наследоваться только от одного абстрактного класса.

  • Интерфейс содержит только объявления методов (в Java 8+ могут быть default-методы с реализацией), не содержит состояния (полей). Класс может реализовывать несколько интерфейсов.

Пример:

abstract class Animal {
    abstract void makeSound();
    void sleep() {
        System.out.println("Sleeping");
    }
}

interface Flyable {
    void fly();
}

class Bird extends Animal implements Flyable {
    void makeSound() {
        System.out.println("Chirp");
    }
    public void fly() {
        System.out.println("Flying");
    }
}