我目前正在開發基於Java的文本遊戲的角色生成機制的過程,但我遇到了一個問題,無法看到我可能出錯的地方。我有一個「Character」類,它是抽象的,然後是另一個類,「NPCharacter」意思就是建立在這個之上。 Eclipse說:「類型NPCharacter不能繼承最後一個類的字符」。任何人都可以在這裏看到錯誤?Java抽象/擴展問題
在此先感謝。
我目前正在開發基於Java的文本遊戲的角色生成機制的過程,但我遇到了一個問題,無法看到我可能出錯的地方。我有一個「Character」類,它是抽象的,然後是另一個類,「NPCharacter」意思就是建立在這個之上。 Eclipse說:「類型NPCharacter不能繼承最後一個類的字符」。任何人都可以在這裏看到錯誤?Java抽象/擴展問題
在此先感謝。
編譯器將您的Character
與java.lang.Character
混淆。只需使用一個包裝,並確保您導入您的Character
。
package com.foo;
public abstract class Character {
public abstract void generateStats();
}
和
import com.foo.Character;
public class NPCharacter extends Character {
public void generateStats() {
}
}
Character是java.lang
包中的標準類,它在每個類中自動導入。爲您的自定義班級選擇另一個名稱。
請檢查您的進口。這聽起來像NPCharacter試圖擴展另一個名爲Character的類(可能是來自標準庫的一個類,它確實可能是最終的)。
優選參閱您的字符類由它的全名,即{包名} .Character
的問題是,Character
在java.lang
包中的類,因爲它是最後你不能擴展它。你應該重命名你的Character
類和/或檢查你的導入語句:你有名字衝突。
編譯器說你不能擴展java.lang.Character
類,這是一個final
類,它不能被子類化。 (將java.lang
包中的類隱式地導入到所有Java源文件中。)
雖然NPCharacter
類打算擴展抽象類,但編譯器無法區分這兩者。
您將不得不使用Character
抽象類的完全合格類名,或者如果這是不可能的(由於它不屬於任何包),除了重命名Character
之外,您將沒有其他選擇抽象類。
但更好的是,您Character
抽象類重命名爲不與在java.lang
包一類的名稱相沖突,因爲這可能會導致混亂的人閱讀你的代碼。
您的代碼看起來不錯。你確定你的NPCharacter類真的試圖擴展正確的Character類,而不是另一個(不同的包),例如: java.lang.Character中的?