Ответ
Основные различия:
-
Наследование: Класс может наследовать только один абстрактный класс, но реализовывать множество интерфейсов.
-
Реализация: Абстрактный класс может содержать реализованные методы, интерфейс - только сигнатуры (до Java 8). Сейчас интерфейсы могут иметь default и static методы.
-
Состояние: Абстрактный класс может содержать поля, интерфейс - только константы (public static final).
Пример:
// Интерфейс
interface Drawable {
void draw(); // абстрактный метод
default void resize() { /* реализация */ }
}
// Абстрактный класс
abstract class Shape {
protected int x, y; // поля
abstract void area(); // абстрактный метод
void move() { /* реализация */ }
} Видео-ответы
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶
▶