Back to questions
Middle
6
Чем отличается абстрактный класс от интерфейса?
Companies where asked
Gear Games
Answer from AI
sobes.tech AI
Абстрактный класс — это класс, который может содержать как реализованные методы, так и абстрактные (без реализации). Он служит базой для наследования и может содержать состояние (поля).
Интерфейс — это контракт, который определяет набор методов без реализации (в классическом понимании). Класс, реализующий интерфейс, обязан реализовать все его методы.
Основные отличия:
- Абстрактный класс может содержать реализацию и состояние, интерфейс — только сигнатуры методов (в некоторых языках интерфейсы могут содержать дефолтные методы).
- Класс может наследоваться только от одного абстрактного класса, но реализовывать несколько интерфейсов.
- Абстрактный класс задаёт частичную реализацию, интерфейс — только контракт.
Пример на Java:
abstract class Animal {
void eat() { System.out.println("Eating"); }
abstract void sound();
}
interface Flyable {
void fly();
}
class Bird extends Animal implements Flyable {
void sound() { System.out.println("Chirp"); }
public void fly() { System.out.println("Flying"); }
}