繁体   English   中英

Java摘要/扩展问题

[英]Java abstract/extends issue

我目前正在为基于Java的文本游戏开发角色生成机制,但我遇到了一个问题,无法看到我可能出错的地方。 我有一个“Character”类,它是抽象的,然后是另一个类,“NPCharacter”,意思是构建在此之上。

public abstract class Character {
    public abstract void generateStats();
}

public class NPCharacter extends Character {
    public void generateStats() {

    }
} 

Eclipse说“类型NPCharacter不能继承最终的类字符”。 谁能在这里看到错误?

提前致谢。

编译器将您的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() {

    }
}

问题是Characterjava.lang包中的一个类,你不能扩展它,因为它是最终的。 您应该重命名您的Character类和/或检查您的import语句:您有名称冲突。

编译器说你不能扩展java.lang.Character类,这是一个不能被子类化的final类。 java.lang包中的类被隐式导入到所有Java源文件中。)

虽然NPCharacter类打算扩展Character抽象类,但编译器无法区分这两者。

您必须使用Character抽象类的完全限定类名,或者如果不可能(由于它不属于任何包),除了重命名Character抽象类之外,您将没有任何其他选择。

但更好的是, 将您的Character抽象类重命名为与java.lang包中的类名不冲突的内容,因为这可能会导致人们对阅读代码产生混淆。

Characterjava.lang包中的标准类,它在每个类中自动导入。 为您的自定义类选择另一个名称。

请检查你的进口情况。 听起来NPCharacter试图扩展另一个名为Character的类(可能是标准库中的一个,它确实可以是最终的)。

最好用你的全名来命名你的Character类,即{package name} .Character

你的代码看起来不错。 你确定你的NPCharacter类真的试图扩展正确的Character类,而不是一个不同的类(来自不同的包),例如java.lang.Character?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM