Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 爪哇语;“零参数”;错误_Java_Oop - Fatal编程技术网

Java 爪哇语;“零参数”;错误

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

我正在用Java构建一个模拟游戏。我有一个接口“Critter”和一个抽象类“AbstractCritter”。我所有的“生物”都是用这两个定义的

小动物

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的主要构造函数}很高兴我帮了忙。干杯,伙计。