-1

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()を使用できます。オーバーライド中にアクセス修飾子をより制限的なものに変更できないため、私には奇妙に思えますが、この場合、継承されたメソッドはプライベートに見えます。

なぜこれがそのような方法で実装されているのですか?

4

2 に答える 2

2

Superクラスメソッドのアクセス修飾子はであり、メソッドは、、およびprotectedでアクセス可能であると述べています。 classpackagesubclass

したがって、サブクラスのパッケージではアクセスできません

アクセス修飾子subclassを使用してその特定のメソッドをオーバーライドすると、同じでメソッドにアクセスできるため、アクセス可能になります。protectedprotectedpackage

于 2013-01-15T05:18:38.727 に答える
0

Protectedは、子クラスのみがメソッドにアクセスできるようにします...Javaが持つ1つのタイプの制限は奇妙なことではありません...

于 2013-01-15T05:05:06.813 に答える