下面是一个示例。将派生对象引用分配给基类变量将不起作用
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