Четыре столпа — это Encapsulation, Abstraction, Inheritance и Polymorphism. Вместе они описывают, как ООП организует и переиспользует код.
| Столп | Основная идея |
|---|
| Encapsulation | Объедините данные + поведение; скройте внутреннее состояние за контролируемым интерфейсом |
| Abstraction | Раскройте что делает объект, скройте как он это делает |
| Inheritance | Подкласс переиспользует и расширяет родительский класс |
| Polymorphism | Один интерфейс, много реализаций, выбираемых во время выполнения |
abstract class Shape { // ABSTRACTION: "what", not "how"
abstract double area(); // each shape decides its own formula
}
class Circle extends Shape { // INHERITANCE: Circle is a Shape
private double r; // ENCAPSULATION: r is private
Circle(double r) { this.r = r; }
double area() { return Math.PI * r * r; } // POLYMORPHISM: own area()
}
class Square extends Shape {
private double s;
Square(double s) { this.s = s; }
double area() { return s * s; }
}
Shape shape = new Circle(2); // POLYMORPHISM in action:
System.out.println(shape.area()); // calls Circle.area() at runtime
Это инструменты, а не цели. Применение наследования или абстракции, где они не требуются, создает сложность. Выбирайте столп, подходящий для задачи.
Эти четыре слова — общий словарь проектирования ООП — интервью и review кода предполагают, что вы их знаете.
Каждый столп отображается на конкретное преимущество: инкапсуляция защищает инварианты, абстракция снижает объем информации для понимания, наследование и полиморфизм позволяют переиспользование и расширяемость.
Библиотека вопросов для IT-собеседований с подробными ответами — от Junior до Senior.
Поддержать