Override vs Overload, Модификаторы доступа, Абстрактный класс vs Интерфейс.
Ответ от нейросети
sobes.tech AI
Override vs Overload:
-
Override (переопределение) — это когда подкласс предоставляет свою реализацию метода, который уже определён в базовом классе с тем же именем и сигнатурой. Позволяет изменить поведение метода.
-
Overload (перегрузка) — это создание нескольких методов с одинаковым именем, но разными параметрами (типом, количеством) в одном классе. Позволяет использовать одно имя для разных операций.
class Example {
void print(int a) { }
void print(String s) { } // перегрузка
}
class Child extends Example {
@Override
void print(int a) { /* новая реализация */ } // переопределение
}
Модификаторы доступа:
- public — доступ из любого места.
- private — доступ только внутри класса.
- protected — доступ внутри класса и его подклассов, а также внутри пакета (в Java).
- default (package-private) — доступ внутри пакета (если не указан модификатор).
Абстрактный класс vs Интерфейс:
-
Абстрактный класс может содержать как абстрактные методы (без реализации), так и методы с реализацией, а также поля с состоянием. Подкласс наследует абстрактный класс и должен реализовать абстрактные методы.
-
Интерфейс — это контракт, который определяет набор методов без реализации (в современных языках интерфейсы могут содержать дефолтные методы с реализацией). Класс может реализовывать несколько интерфейсов, но наследовать только один класс.
Использование:
- Абстрактный класс подходит, когда есть общая реализация и состояние, которое нужно разделить.
- Интерфейс — для определения возможностей, которые могут быть реализованы разными классами без общей иерархии.