Встречается на собеседованиях • сегодня
Приведи пример использования Open-Closed Principle
**Пример с интерфейсом и классами:**
```java
interface Shape {
double area();
}
class Circle implements Shape {
private double radius;
public Circle(double radius) {
this.radius = radius;
}
@Override
public double area() {
return Math.PI * radius * radius;
}
}
class Rectangle implements Shape {
private double width;
private double height;
public Rectangle(double width, double height) {
this.width = width;
this.height = height;
}
@Override
public double area() {
return width * height;
}
}
class AreaCalculator {
public double calculateTotalArea(List shapes) {
return shapes.stream().mapToDouble(Shape::area).sum();
}
}
```
**Суть:**
- Классы `Circle` и `Rectangle` закрыты для модификации (не меняют свою логику), но открыты для расширения (можно добавить новый класс `Triangle`, реализующий `Shape`).
- `AreaCalculator` работает с абстракцией (`Shape`), а не конкретными классами, что позволяет добавлять новые фигуры без изменения его кода.

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы