[英]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.