Встречается на собеседованиях • сегодня
Будет ли нарушением принципа открытости/закрытости, если поменять интерфейс в классе наследника
Изменение интерфейса в классе-наследнике может нарушать принцип открытости/закрытости (OCP), если это приводит к несовместимости с базовым классом. OCP предполагает, что классы должны быть открыты для расширения, но закрыты для модификации.
Пример нарушения:
python
class Animal:
def make_sound(self):
pass
class Dog(Animal):
def make_sound(self, volume): # Изменили сигнатуру метода
print(f"Bark at {volume}dB")
text
Лучший подход - сохранять совместимость интерфейсов:
```python
class Animal:
def make_sound(self, volume=None): # Базовый класс поддерживает новый параметр
pass
class Dog(Animal):
def make_sound(self, volume=None):
print(f"Bark at {volume or 60}dB")Ключевое правило: наследник должен полностью реализовывать контракт родительского класса, но может расширять функциональность, не изменяя существующее поведение.

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