Если мы говорим о публичном наследовании (IS_A), ключом является понимание принципа подстановки Лискова и его значения в отношении наследования. В частности, это означает, что отношение IS-A является зависимым от контекста, который часто упускается из виду при публичном наследовании.
Чтобы использовать приведенный выше пример, классы Car и Truck должны быть получены только из Vehicle, если они могут быть заменены классом Vehicle в любой программе, написанной для использования класса Vehicle, без воздействия на вызывающий код.
Если мы говорим о наследовании реализации (так называемое частное наследование в C ++), вы должны предпочесть композицию, а не наследование как механизм повторного использования.