问题在于以下行:
Test test = new TestImpl();
这告诉编译器忘记新对象是TestImpl并将其视为普通的旧Test。如您所知,Test没有anotherMethod()。
您所做的称为“向上转换”(将对象转换为更通用的类型)。正如另一位发帖人所说的,您可以通过不up缩来解决问题:
TestImpl test = new TestImpl();
如果 确定 Test对象确实是TestImpl,则 可以将其 向下转换(告诉编译器它是更特定的类型):
Test test = new TestImpl();:((TestImpl) test).anotherMethod();
但是,这通常是一个坏主意,因为它可能导致ClassCastException。使用编译器,而不是反对编译器。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)