Java层次结构和访问级别
在我的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
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
。