Публичное наследование делает базовый класс доступным для внешнего мира. Например, указатель на производный класс может быть преобразован (неявно, не меньше) в указатель на базовый класс. Рассмотрим стек, полученный из связанного списка. Как правило, вам НЕ нужно, чтобы кто-то неявно преобразовывал ваш массив в его базовый связанный список, что позволило бы ему делать вещи, не разрешенные для стека, такие как вставка или удаление элементов в середине.
Обычное значение, приписываемое частному наследованию, - «Реализуется в терминах» - это означает, что мы обычно НЕ хотим, чтобы внешний мир / пользователь видел / знал / заботился о том, что этот класс имеет базовый класс , Публичное наследование должно следовать правилу подстановки Лискова, которое гласит, что производный класс может быть заменен везде, где требуется публичный базовый класс. Что касается частного наследования, мы специально НЕ говорим, что производный класс может заменить базовый класс.
Общественное наследование - это метод проектирования. Его цель - разрешить использование написанного вами кода другим кодом, который уже знает, как работать с интерфейсом, представленным базовым классом.
Частное наследование - это метод реализации. Он предназначен только для упрощения вашей реализации с использованием кода из базового класса.