下面是一個示例。將派生對象引用分配給基類變量將不起作用
Class A {
Method A();
Method B();
Method C();
}
// A and B are not interfaces
Class B extends A {
Method C(int);
}
Class Harness {
A ob = new B();
ob.C(3);
}
IDE抱怨ob.C(3)
不能對方法在C
因爲A
C
期望沒參數製成。但據我所知,我正在撥打方法C
在B
。
據我所知,變量類型決定了被調用的對象的方法集,但是實際的對象決定了將被調用的確切方法。那爲什麼它不工作?
撇開你的代碼是不可編譯的......你的類'B'有一個'C'方法。所以調用'new B()。C()'是完全正確的。這不能有任何編譯器錯誤。因此我投票結束不清楚。請編輯您的問題,並提供一個可編輯的示例,正確解釋您遇到的問題。 – Seelenvirtuose
我編輯了這個問題。請看看它。謝謝。 –
@RajeevSingh *「C可以這樣調用ob.C(3);,代碼看起來很好」*這是錯誤的,而'ob.C(3)'''不起作用。 – Tom