クラスとインナークラスを取得しました
01 public class A{
02 void test(){};
03 public class B{
04 void test(){
05 test();
06 }
07 }
08 }
わかりました。05行目でidはクラスAのメソッドテストにアクセスするのが好きです。しかし、クラスAのメソッドを使用するように指定する方法がわからないため、ループに入ります。
何か案は?
クラスとインナークラスを取得しました
01 public class A{
02 void test(){};
03 public class B{
04 void test(){
05 test();
06 }
07 }
08 }
わかりました。05行目でidはクラスAのメソッドテストにアクセスするのが好きです。しかし、クラスAのメソッドを使用するように指定する方法がわからないため、ループに入ります。
何か案は?
01 public class A{
02 void test(){};
03 public class B{
04 void test(){
05 test(); // local B.test() method, so recursion, use A.this.test();
06 }
07 }
08 }
EDIT:@Thiloが述べたように:外部クラスと内部クラスで同じメソッド名を使用しないでください。これにより、名前の競合が回避されます。
あなたはそのようなことをすることができます:
public class A{
void test(){
System.out.println("Test from A");
};
public class B{
void test(){
System.out.println("Test from B");
A.this.test();
}
}
public static void main(String[] args) {
A a = new A();
B b = a.new B();
b.test();
}
}
次に、次の出力があります。
Test from B
Test from A
クラス B は、クラス A を拡張するために、いわゆるネストされたクラスである必要はありません。
public class B extends A {
...
}
A の test() のように呼び出すことができるよりも
super.test()
あなたが行うように test() を呼び出すと、それは再帰的と呼ばれるものであり、審判の日までフリーズします
静的にすると、呼び出すことができます
A.test()
それ以外の場合は、B で使用する A のインスタンスが必要です
A a;
a.test();