[英]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不能继承最终的类字符”。 谁能在这里看到错误?
提前致谢。
编译器将您的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
包中的一个类,你不能扩展它,因为它是最终的。 您应该重命名您的Character
类和/或检查您的import语句:您有名称冲突。
编译器说你不能扩展java.lang.Character
类,这是一个不能被子类化的final
类。 ( java.lang
包中的类被隐式导入到所有Java源文件中。)
虽然NPCharacter
类打算扩展Character
抽象类,但编译器无法区分这两者。
您必须使用Character
抽象类的完全限定类名,或者如果不可能(由于它不属于任何包),除了重命名Character
抽象类之外,您将没有任何其他选择。
但更好的是, 将您的Character
抽象类重命名为与java.lang
包中的类名不冲突的内容,因为这可能会导致人们对阅读代码产生混淆。
Character是java.lang
包中的标准类,它在每个类中自动导入。 为您的自定义类选择另一个名称。
请检查你的进口情况。 听起来NPCharacter试图扩展另一个名为Character的类(可能是标准库中的一个,它确实可以是最终的)。
最好用你的全名来命名你的Character类,即{package name} .Character
你的代码看起来不错。 你确定你的NPCharacter类真的试图扩展正确的Character类,而不是一个不同的类(来自不同的包),例如java.lang.Character?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.