-1

私のJavaアプリケーションでは、次のシナリオを解決したい

class C {

}

Class A extends C {
    public A() {
        B objB=new B(this);
        objB.methodA();
    }

    public void methodX() {

    }
}

Class B {
    private A objA;
    public B(A a) {
        objA=a; 
    }
    public void methodA() {
        objA.methodX()
    }
}

クラス B から A の methodX() を呼び出すことは可能ですか? コードをコンパイルすると、(クラス B の) objA はクラス C メソッドにのみアクセスできますか? 上記のシナリオを解決するための代替方法はありますか?? 助けてください

4

1 に答える 1

1

あなたがやろうとしていることは意味がなく、コードがおかしくなっているという事実を除けば、意味的には何も問題はありません。以下のようにしてみました。

package com.test;

public class So {

    /**
     * @param args
     */
    public static void main(String[] args) {
        A a = new A();
        B b = new B(a);
        b.methodA();

    }

}

class A extends C {

    public A() {

        B objB = new B(this);
        objB.methodA();
    }

    public void methodX() {

    }

}

class B {

    private A objA;

    public B(A a) {

        objA = a;

    }

    public void methodA() {

        objA.methodX();

    }
}

class C {

}

main(String[] args)メソッドの別のバリアントを次に示します。

public static void main(String[] args) {        
        C ca = new A();
        B b2 = new B((A)ca); // This is typcasting
        b2.methodA();

    }
于 2012-06-21T04:02:21.903 に答える