Вопрос с собеседования · Java
Какие четыре принципа ООП?
JuniorООП
Ещё спрашивают так:
- Назовите принципы ООП
- Что такое инкапсуляция, наследование и полиморфизм?
- Какие основные принципы объектно-ориентированного программирования?
Коротко
Четыре принципа: инкапсуляция, наследование, полиморфизм, абстракция — к каждому короткий пример.
- Инкапсуляция — скрыть состояние за методами, которые берегут инварианты
- Полиморфизм — переопределённый метод вызывается по ссылке базового типа
А ещё Скажите, что инкапсуляция — это не просто private-поля с геттерами
Подробно
ООП строит программу из объектов, у которых есть состояние и поведение. На собеседовании ждут не только список, но и пример к каждому принципу.
- Инкапсуляция — объект скрывает внутреннее состояние и даёт менять его только через методы, которые сохраняют правила (инварианты). Счёт не даёт уйти в минус: поле
balanceприватное, аwithdraw()проверяет сумму. Геттер и сеттер на каждое поле инкапсуляцию не дают. - Наследование — класс получает поля и методы родителя (
extends) и может их расширять. Используют для отношения «является»; для переиспользования кода чаще лучше композиция. - Полиморфизм — один интерфейс, разные реализации:
Shape s = new Circle(); s.area()вызовет методCircle. Выбор метода происходит во время выполнения по реальному типу объекта (переопределение, overriding). Перегрузка (overloading) — другое: выбор при компиляции по типам аргументов. - Абстракция — выделяем существенное и прячем детали: интерфейс
PaymentGatewayописывает, что умеет платёжная система, не раскрывая как.
Пример
interface Shape { double area(); } // абстракция
record Circle(double r) implements Shape {
public double area() { return Math.PI * r * r; }
}
record Square(double side) implements Shape {
public double area() { return side * side; }
}
List<Shape> shapes = List.of(new Circle(1), new Square(2));
shapes.forEach(s -> System.out.println(s.area())); // полиморфизмЧто хотят услышать
- Названы все четыре принципа.
- К каждому — короткий пример из кода.
- Инкапсуляция объяснена через инварианты, а не через private-поля.
- Полиморфизм — через переопределение и вызов по ссылке базового типа.
Частые ошибки
- Путать абстракцию и инкапсуляцию.
- Сводить полиморфизм только к перегрузке (overloading) вместо переопределения (overriding).
Проверьте себя
Один верный вариант. Подумайте, потом откройте ответ.
Показать варианты и ответ
- ✗Наследование, многопоточность, абстракция, рефлексия
- ✓Инкапсуляция, наследование, полиморфизм, абстракция
- ✗Инкапсуляция, рекурсия, полиморфизм, сериализация
- ✗Полиморфизм, иммутабельность, инкапсуляция, дженерики
Что спросят дальше
- Чем абстрактный класс отличается от интерфейса?
- Почему composition часто предпочтительнее inheritance?
Разбор темы
- ООП и его принципы
Инкапсуляция, наследование, полиморфизм, абстракция — зачем они нужны, как работают внутри и почему композицию предпочитают наследованию.
Связанные вопросы
Партнёр платформы
Разбор собеседования
Разбор собеседования с sotto
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.