Java层次结构和访问级别

Java层次结构和访问级别,java,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; } pub

在我的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 help

除了您试图做的事情毫无意义,代码也很奇怪之外,它在语义上没有任何问题。我只是像下面那样试过

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();

    }

不知道你在问什么methodX()应该可以在任何地方调用,因为它声明为public。我正在将“this”作为构造函数参数从类A传递给类B,当它到达类B时,它是否指向类C(超类)在构造函数中传递
this
时要注意的是,如果试图调用it@gobernador我不想提醒大家,整个循环链很糟糕,但可能是一个更大、可能更糟糕的代码的简化版本:)。与其提醒他传递
,问题应该是他到底为什么要这样做,因为即使对于一个不可变的对象,这也会与代码所在的序列紧密耦合。谢谢。实际上,我从列表器内部调用它。问题就在这里。正如你提到的,它在外面工作正常。是的,不确定你在现实中如何称呼它,但类型转换是你可能想要的。e、 g.在这一行完成'b2=新的B((A)ca);`。请注意,变量
ca
属于
C
类型,并在此处转换为子类型
A