Назад к вопросам
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");
}
}