Java 爪哇语;“零参数”;错误
我正在用Java构建一个模拟游戏。我有一个接口“Critter”和一个抽象类“AbstractCritter”。我所有的“生物”都是用这两个定义的 小动物Java 爪哇语;“零参数”;错误,java,oop,Java,Oop,我正在用Java构建一个模拟游戏。我有一个接口“Critter”和一个抽象类“AbstractCritter”。我所有的“生物”都是用这两个定义的 小动物 public interface Critter { // create constants // each holds a unique integer value final int NORTH = 1; final int WEST = 2; final
public interface Critter {
// create constants
// each holds a unique integer value
final int NORTH = 1;
final int WEST = 2;
final int SOUTH = 3;
final int EAST = 4;
final int CENTER = 5;
// create abstract methods
public char getChar();
public int getMove(CritterInfo theInfo);
}
抽象生物
public abstract class AbstractCritter implements Critter{
// create char to hold a particular critter
private char critterChar;
public AbstractCritter(final char theChar) {
critterChar = theChar;
}
public char getChar() {
return critterChar;
}
}
示例生物:
public class Stone extends AbstractCritter {
public Stone(char S) {
super(S);
// This is the main constructor for stone
}
public int getMove(CritterInfo theInfo) {
// The stone cannot move.
return 5;
}
}
主回路:
public final class CritterMain {
/** private constructor to inhibit instantiation. */
private CritterMain() {
// Do not instantiate objects of this class
throw new IllegalStateException();
}
/**
* The start point for the CritterMain application.
*
* @param theArgs command line arguments - ignored
*/
public static void main(String[] theArgs) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
CritterFrame frame = new CritterFrame();
frame.add(100, Stone.class);
frame.add(50, Bat.class);
frame.add(25, Frog.class);
frame.add(25, Mouse.class);
frame.add(25, Turtle.class);
frame.add(25, Wolf.class);
frame.start();
}
});
}
}
每当我尝试运行主CriterMain时,就会出现一个奇怪的错误,我在google上找不到:“线程“AWT-EventQueue-0”java.lang.RuntimeException中的异常:Stone类没有零参数构造函数””
这与我如何定义我的生物有关。有人能帮我解决这个问题吗?当你创建一个类的实例时,你可以使用一个可用的构造函数。 构造函数可以没有参数,也可以超过零个参数 如果您没有声明一个没有参数的构造函数,并且试图实例化一个没有参数的类,那么您显然会得到一个错误
因此,只要创建一个没有参数的构造函数,就可以停止错误 信息似乎相当清楚;您的
Stone
类中没有零参数构造函数。您可以从本文中删除Critter和AbstractCritter,因为它们不会影响问题。添加石头类。也许你添加了一个非零参数构造函数,这就是你的类没有默认构造函数(零参数)的原因。你在CriterFrame中定义了你的add
方法了吗?如果是,请发布该代码。CriterFrame和CriterMain都经过测试并正常工作。当我尝试添加诸如public Bat(){}之类的零参数构造函数时,Eclipse给了我一个错误。如果总是用参数实例化一个对象,希望这个帮助和将不能正常工作;public Stone(){super(S);//这是Stone的主要构造函数}很高兴我帮了忙。干杯,伙计。