>>39のケースを解決しようととりあえずprotectedにすればいいと思うだろ?

ところがメソッドB2の処理の途中に
クラスXの処理を絡ませなければならないことになった
しかし、クラスA2はクラスXを呼び出すと循環参照になってしまうためそれができない

なのでクラスEにメソッドB3を作成することになった

ときにメソッドCはprivateでは呼び出すことができない

ここまで解決しようとするとメソッドCはpublicにしておくしかない

そしてこれはよくあることだ