Un objet d'une sous-classe B est censé pouvoir remplacer un objet de la classe parent A partout ou un objet de cette classe est attendu. Donc si quelqu'un veut utiliser une fonction publique A::f il ne faut pas qu'un B::f la fasse "disparaitre".
Inversement si B fait "apparaitre" une fonction protected de A, cela ne gène en rien les utilisateurs de la classe A, si A a laissé la fonction en protected au lieu de private, il autorise ses sous-classes à en faire ce qu'elles veulent, y compris l'exposer au monde entier.
---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.