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在不同的文件中定义,它们 do 编译没有错误。
答案 0 :(得分:0)
好的,如果您有一辆Z型轿车和一辆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);
}
}
哪个工作得很好