Мало того, что это абсолютно радикальное и непрактичное предложение, оно не особенно убедительно. Тот факт, что какая-либо функция нарушается, не означает, что ее следует удалить полностью. Люди злоупотребляют всевозможными вещами в течение очень долгого времени, но это вряд ли означает, что они не служат полезной цели при правильном использовании.
Шаблоны проектирования - это одно; разработка намеренно ограниченного языка, чтобы соответствовать вашему идеальному представлению о хорошем шаблоне проектирования, - это совсем другое. На мой взгляд, это бесполезное упражнение. Программисты все равно найдут что-то, что можно оскорбить.
И я не согласен с основным предположением, что любое использование override
является неуместным или оскорбительным. Есть много случаев, когда вы хотите воспользоваться наследованием, подразумевающим отношения is-a . Конечно, эта модель не соответствует реальному миру 100% времени, но есть много раз, что она делает.
Примеры классов Animal
и Shape
, о которых вы читаете в учебниках, могут быть немного надуманными, но я часто использую наследование в реальных приложениях.
Это не значит, что я не согласен с мнением о том, что в целом или, если сомневаешься, отдавать предпочтение композиции, а не наследованию. Но это не говорит о том, что наследование это плохо и никогда не должно использоваться.