Java层次结构和访问级别

时间:2012-06-21 03:51:40

标签: java

在我的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()。当我编译代码时,objA(在B类中)只能访问C类方法?是否存在解决上述情况的替代方式? Plz帮助

1 个答案:

答案 0 :(得分: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();

    }