Sobes.tech
Назад к вопросам
Middle+
7

Override vs Overload, Модификаторы доступа, Абстрактный класс vs Интерфейс.

Компании, где спрашивали
SSP Soft

Ответ от нейросети

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 Интерфейс:

  • Абстрактный класс может содержать как абстрактные методы (без реализации), так и методы с реализацией, а также поля с состоянием. Подкласс наследует абстрактный класс и должен реализовать абстрактные методы.

  • Интерфейс — это контракт, который определяет набор методов без реализации (в современных языках интерфейсы могут содержать дефолтные методы с реализацией). Класс может реализовывать несколько интерфейсов, но наследовать только один класс.

Использование:

  • Абстрактный класс подходит, когда есть общая реализация и состояние, которое нужно разделить.
  • Интерфейс — для определения возможностей, которые могут быть реализованы разными классами без общей иерархии.