无法调用派生内部 class 的实例方法
Can't call instance method of derived inner class
public class A extends Q implements T {
public class B extends Z {
public void D(int A, int B) {
}
}
private Z z;
public A() {
// other stuff
z = new B(/** params **/);
// more stuff
}
void C () {
((B)z).D(2,3);
}
}
代码的结构是这样的(由于法律原因不能给出完整的片段)当我尝试调用 D 时,我从 java 编译器中得到符号未找到错误。 Z、Q 和 T 在不同的文件中定义,它们 编译没有错误。
好的,如果您有一辆 class 车辆 (Z) 和一辆 class 卡车 (B),它也是一辆车辆但可以装载货物 (D)。然后,如果我们知道我们有任何车辆 (z) 并且我们只是假设它是一辆卡车 ( (B z) ),我们无法确定它是否真的可以附加货物,因为我们只是假设它是一辆卡车 (B)。您可以做的是创建一个构造函数,它接收车辆 (Z) 并根据给定的信息构造卡车 (B)。这辆新卡车既然是一辆,就可以像一辆汽车一样对待,但我们知道它是一辆卡车,我们也可以把它当作一辆卡车:
class AClass extends Q implements T
{
class B extends Z
{
boolean CargoAttached;
public B()
{
}
public B(Z z)
{
CargoAttached = false;
}
public void D(int A, int B)
{
}
}
private Z z = new Z();
void C()
{
z = (new B(z));
((B) z).D(1, 2);
}
}
效果很好
public class A extends Q implements T {
public class B extends Z {
public void D(int A, int B) {
}
}
private Z z;
public A() {
// other stuff
z = new B(/** params **/);
// more stuff
}
void C () {
((B)z).D(2,3);
}
}
代码的结构是这样的(由于法律原因不能给出完整的片段)当我尝试调用 D 时,我从 java 编译器中得到符号未找到错误。 Z、Q 和 T 在不同的文件中定义,它们 编译没有错误。
好的,如果您有一辆 class 车辆 (Z) 和一辆 class 卡车 (B),它也是一辆车辆但可以装载货物 (D)。然后,如果我们知道我们有任何车辆 (z) 并且我们只是假设它是一辆卡车 ( (B z) ),我们无法确定它是否真的可以附加货物,因为我们只是假设它是一辆卡车 (B)。您可以做的是创建一个构造函数,它接收车辆 (Z) 并根据给定的信息构造卡车 (B)。这辆新卡车既然是一辆,就可以像一辆汽车一样对待,但我们知道它是一辆卡车,我们也可以把它当作一辆卡车:
class AClass extends Q implements T
{
class B extends Z
{
boolean CargoAttached;
public B()
{
}
public B(Z z)
{
CargoAttached = false;
}
public void D(int A, int B)
{
}
}
private Z z = new Z();
void C()
{
z = (new B(z));
((B) z).D(1, 2);
}
}
效果很好