簡體   English   中英

Java無法覆蓋構造函數中使用的方法:Slime類型的setupAnimationFrames()方法必須覆蓋或實現超類型方法

[英]Java can't override method used in constructor: The method setupAnimationFrames() of type Slime must override or implement a supertype method

我在覆蓋從Java中的父類繼承的方法時遇到問題。 我父母班的摘錄:

public Character(String spriteLabel, float frameTime, float speed, float x, float y) {
    // Setup font and nameplate
    this.setupAnimationFrames();
    ....
    this.currentFrame = downFrames[0];
}

private void setupAnimationFrames() {
    ...     
}

在我的孩子班上,我正在嘗試:

public class Slime extends Character {
    @Override
    private void setupAnimationFrames() {
        ...     
    }

    public Slime() {
        super("...", 0.15f, 2,727,300);
    }
}

但是,Eclipse告訴我:

The method setupAnimationFrames() of type Slime must override or implement a supertype method

我已經檢查過,並且將project / workspace屬性設置為使用Java 1.6,這似乎是導致此錯誤的常見原因。

為什么Java不讓我重寫該方法?

重寫僅適用於子類可見的那些實例方法。由於超類setupAnimationFrames()方法是私有的,因此對子類不可見,因此,重寫不適用於此處。您正在此處實現自己的方法。只需刪除@Override注釋即可編譯代碼。

PS:-僅出於驗證目的,您可以使用任何返回類型實現setupAnimationFrames()方法,也可以引發任何已檢查的異常,它將進行編譯(但當然帶有@Override注釋)

   private String setupAnimationFrames() { 
      //This compiles in child class,return type is different from parent class 
      ...     
   }

    private List setupAnimationFrames() throws Throwable {
      //This compiles in child class ,a checked Throwable has been added to 
     //method signature
        ...     
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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