我在Java中有一个子类问题。我有以下课程:
MainIterator implements Iterator{ //... Methods from the interface Iterator public void foo(){ //Do something... } }
在我的主班上,我打电话给:
Iterator i = new MainIterator(); i.foo();
这是行不通的,因为Iterator没有实现 foo() 函数。没有类型转换,i怎么可能使它工作?i必须来自Iterator类型。
i
MainIterator i = new MainIterator();
Java编译器仅允许调用属于 声明 的变量类型的方法。如果您使用
Iterator i = new MainIterator();
您正在告诉编译器: _我创建了一个Iterator实例,该实例的类型为MainIterator,但是您无需在其余的代码中知道这一点。 只需将此对象视为Iterator的实例即可。_而且Iterator没有任何foo()方法。