簡體   English   中英

盡管實現了具體的類方法,但抽象類仍然不斷拋出異常

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM