メソッドがpublicとマークされていない場合(すべてのクラスが同じファイルにある場合)、プログラムはエラーを返します

dasfdsa

次の問題に遭遇した匿名クラスを作成しようとしています。次のコードでは、表示メソッドのアクセス修飾子をデフォルトに変更するとエラーが発生しますが、パブリックに変更すると正常に機能します。これが発生する理由を説明してください。すべてのクラスが同じパッケージに含まれている限り、AFAIKpublicとdefaultは同じように機能します。私が間違っている場合は私を訂正してください。


//ファイルから:Skg.java

package sandeep2;

class Skg1 
{
    public void display()
    {
        System.out.println("sandeep here");
    }
}

class Skg2 {

    public void say()
    {
        System.out.println("Skg2");
    }

    Skg1 obj = new Skg1()  
    {
        **public void display()**  //wont work if this is not public ????????????
        {
            System.out.println("I am ANONymous");
        }
    };
}

public class Skg {

    public static void main(String[] args)
    {
        Skg2 x = new Skg2();
        x.obj.display();
    }
}
ジョン・ボリンジャー

クラスSkg2は、クラスのサブクラスとして匿名内部クラスのインスタンスを作成しようとしますSkg1その匿名の内部クラスSkg1.display()は、パブリックであるをオーバーライドしますメソッドをオーバーライドして、その可視性を減らすことはできません。Javaはそれを許可していません、そしてあなたがそれをすることができればそれは置換原則に違反するでしょう。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ