我有一个抽象类Automobile,它有一个未实现的方法叫做move 所以
public abstract class Automobile {
public void move() {
throw new UnsupportedOperationException();
}
}
我有一个具体的类,它扩展了我的抽象类并实现了move方法。我的问题是该方法不断抛出UnsupportedOperationException
public class Car extends Automobile{
int x;
public void move(){
x++;
}
}
答案 0 :(得分:3)
你的具体课可能有很多原因:也许你的具体实际上并没有扩展Foo
?或者它可能会在其身体的某个地方调用super.move()
。
而不是抛出异常,正确的方法是将类和方法定义为abstract
以强制子类覆盖它。
public abstract class Foo {
public abstract void move();
}
请注意,Foo
只有抽象方法,如上例所示,那是你想要的interface
,而不是抽象类。此外,您应该将其命名为定义行为
public interface Moving {
void move();
}
然后:
public class MovingObject implements Moving {
....
@Override
public void move() {
// your implementation
}
....
}
答案 1 :(得分:1)
您是否在实现类中调用了super.move()?如果您使用Source-> Override / Implement Methods ...
,则默认情况下Eclipse会生成该调用否则我认为你没有正确覆盖方法。