[英]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在不同的文件中定義,並且確實可以編譯而不會出錯。
好的,如果您有一類車輛(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);
}
}
哪個工作得很好
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.