Назад к вопросам
Junior
69
questionbank
Что такое интерфейс и в чем его отличие от абстрактного класса?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Интерфейс — это контракт, определяющий набор методов, которые должны быть реализованы классом. Он не содержит реализации этих методов и не может иметь полей состояния (за исключением констант). Служит для определения поведения объектов и множественного наследования поведения.
Абстрактный класс может содержать как абстрактные (без реализации), так и конкретные (с реализацией) методы. Он может иметь поля состояния и использоваться для определения общей структуры и поведения для подклассов. Множественное наследование от абстрактных классов в Java невозможно.
Ключевые отличия:
- Реализация методов: Интерфейс не имеет реализации, абстрактный класс может иметь.
- Поля состояния: Интерфейс не имеет полей состояния (кроме констант), абстрактный класс может иметь.
- Множественное наследование: Класс может реализовывать несколько интерфейсов, но наследовать только один абстрактный класс.
- Конструкторы: Интерфейс не может иметь конструкторов, абстрактный класс может.
Пример интерфейса:
interface Drawable {
void draw(); // Абстрактный метод
}
Пример абстрактного класса:
abstract class Shape {
protected int x, y; // Поля состояния
public Shape(int x, int y) {
this.x = x;
this.y = y;
}
abstract void display(); // Абстрактный метод
void moveTo(int newX, int newY) { // Конкретный метод
x = newX;
y = newY;
}
}