[英]concrete class method keeps throwing an exception from abstract class despite implementation
我有一个抽象类Automobile,它有一个未实现的方法,称为move so
public abstract class Automobile {
public void move() {
throw new UnsupportedOperationException();
}
}
我有一个具体的类扩展了我的抽象类并实现了move方法。我的问题是该方法不断抛出UnsupportedOperationException
public class Car extends Automobile{
int x;
public void move(){
x++;
}
}
在您的具体课程中可能有很多原因:也许您的具体内容实际上并未扩展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
}
....
}
您要在实现类中调用super.move()吗? 如果您使用Source-> Override / Implement Methods ...,则Eclipse默认生成该调用。
否则,我认为您没有正确覆盖该方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.