java - 如何访问protected静态内部类?
高洛峰
高洛峰 2017-04-17 17:48:11
0
2
318

如何访问一个受保护的静态内部类?

public class A{
    protected static class AInner{
        public void test(){
        }
    }
}
public class B extends A{
    public void hello(){
        //怎样才能访问AInner中的test方法呢?
    }
}

为什么当A和B在不同包中时,new AInner().test()会编译报错呢?
而当A和B在同一个包中,却不会报错?

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全員に返信(2)
Ty80

A B A.AInner のコンストラクターがデフォルトのコンストラクターであり、 のデフォルトのアクセス レベルにより、同じパッケージ内のサブクラスが を使用できるため、パッケージが異なるとエラーが報告されます。
クラス A を変更できれば、移植された、またはパブリック レベルのコンストラクターを作成できます。

リーリー

Aクラスを変更しない場合は、これを見てください。
アクセス可能なデモを書きました。

構造

カテゴリー A:

リーリー

カテゴリー B:

リーリー
いいねを押す +0
刘奇

なぜですか? protected可視範囲は、パッケージおよび継承クラス内で可視となる可視範囲によって決まります。
アクセス方法は?強制的にアクセスする必要がある場合は、リフレクションを通じて可視性を変更するだけです。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート