Если новый метод будет реализован с использованием существующего открытого интерфейса, то, возможно, он более объектно-ориентирован, чтобы он был отдельной функцией, а не методом. По крайней мере, Скотт Мейерс утверждает, что это так.
Почему? Потому что это дает лучшую инкапсуляцию. IIRC утверждает, что интерфейс класса должен определять то, что делает объект. Вспомогательные функции - это то, что можно сделать с объектом или с ним, а не то, что объект должен делать сам. Таким образом, они не принадлежат к классу. Если они находятся в классе, они могут излишне получать доступ к закрытым членам и, следовательно, расширять сокрытие этого члена и, следовательно, количество строк кода, к которым нужно прикоснуться, если закрытый член изменяется каким-либо образом.
Конечно, если вы хотите получить доступ к защищенным членам, вы должны наследовать. Если желаемому методу требуется состояние для каждого экземпляра, но нет доступа к защищенным элементам, то вы можете наследовать или составлять по своему вкусу - первый обычно более лаконичен, но имеет определенные недостатки, если отношения на самом деле не «являются» .