package xxx.yyy;
public class ParentClass {
    protected void doPrint(){
        System.out.println("Parent.....");
    }
}
package aaa.bbb;
import cathy.inner.ParentClass;
public class Child extends ParentClass {        
    public void getName(){
        System.out.println("Child....");
    }
}
パッケージaaa.bbbのクライアントは、new Child()。doPrint()を使用できません。ただし、子をオーバーライドすると、クライアントはnew Child()。doPrint()を使用できます。オーバーライド中にアクセス修飾子をより制限的なものに変更できないため、私には奇妙に思えますが、この場合、継承されたメソッドはプライベートに見えます。  
なぜこれがそのような方法で実装されているのですか?