Для private свойств/методов нельзя повысить видимость при наследовании, поэтому в контексте родительского класса (А) всегда будет вызывается private метод getName, а public версия из дочернего класса (B) будет вызывается только в контексте этого дочернего класса. Для protected свойств/методов повышение видимости при наследовании допустимо, поэтому вызывается переопределённая версия метода getName.