2012-02-26 192 views
7

我目前正在開發基於Java的文本遊戲的角色生成機制的過程,但我遇到了一個問題,無法看到我可能出錯的地方。我有一個「Character」類,它是抽象的,然後是另一個類,「NPCharacter」意思就是建立在這個之上。 Eclipse說:「類型NPCharacter不能繼承最後一個類的字符」。任何人都可以在這裏看到錯誤?Java抽象/擴展問題

在此先感謝。

回答

8

編譯器將您的Characterjava.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() { 

    } 
} 
1

Characterjava.lang包中的標準類,它在每個類中自動導入。爲您的自定義班級選擇另一個名稱。

0

請檢查您的進口。這聽起來像NPCharacter試圖擴展另一個名爲Character的類(可能是來自標準庫的一個類,它確實可能是最終的)。

優選參閱您的字符類由它的全名,即{包名} .Character

2

的問題是,Characterjava.lang包中的類,因爲它是最後你不能擴展它。你應該重命名你的Character類和/或檢查你的導入語句:你有名字衝突。

2

編譯器說你不能擴展java.lang.Character類,這是一個final類,它不能被子類化。 (將java.lang包中的類隱式地導入到所有Java源文件中。)

雖然NPCharacter類打算擴展抽象類,但編譯器無法區分這兩者。

您將不得不使用Character抽象類的完全合格類名,或者如果這是不可能的(由於它不屬於任何包),除了重命名Character之外,您將沒有其他選擇抽象類。

但更好的是,Character抽象類重命名爲不與在java.lang包一類的名稱相沖突,因爲這可能會導致混亂的人閱讀你的代碼。

0

您的代碼看起來不錯。你確定你的NPCharacter類真的試圖擴展正確的Character類,而不是另一個(不同的包),例如: java.lang.Character中的?