Встречается на собеседованиях • сегодня

Будет ли нарушением принципа открытости/закрытости, если поменять интерфейс в классе наследника

Изменение интерфейса в классе-наследнике может нарушать принцип открытости/закрытости (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")

Ключевое правило: наследник должен полностью реализовывать контракт родительского класса, но может расширять функциональность, не изменяя существующее поведение.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы