如何访问一个受保护的静态内部类?
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在同一个包中,却不会报错?
PHP中文网2017-04-17 17:50:11
A
B
A.AInner のコンストラクターがデフォルトのコンストラクターであり、 のデフォルトのアクセス レベルにより、同じパッケージ内のサブクラスが を使用できるため、パッケージが異なるとエラーが報告されます。
クラス A を変更できれば、移植された、またはパブリック レベルのコンストラクターを作成できます。
A
クラスを変更しない場合は、これを見てください。
アクセス可能なデモを書きました。
構造
カテゴリー A:
リーリーカテゴリー B:
リーリー怪我咯2017-04-17 17:50:11
なぜですか? protected
可視範囲は、パッケージおよび継承クラス内で可視となる可視範囲によって決まります。
アクセス方法は?強制的にアクセスする必要がある場合は、リフレクションを通じて可視性を変更するだけです。