gpt4 book ai didi

java - 父类(super class)中没有可用的构造函数(Java)

转载 作者:行者123 更新时间:2023-11-30 06:28:27 25 4
gpt4 key购买 nike

我有一个 super 类,称为游戏。它看起来像这样:

import java.util.ArrayList;

public class Game {
private ArrayList<Enemy> enemies = new ArrayList<Enemy>();
private ArrayList<Tower> towers = new ArrayList<Tower>();
private int corridorLength;
private int currentPosition = 0;
public Game(int corridorLength){
this.corridorLength = corridorLength;
}

public void addTower(int damage,int timeStep){
this.towers.add(new Tower(damage,timeStep)); // Add tower with
current position corrdor length

}
public void addEnemy(int health, int speed){
this.enemies.add(new Enemy(health,speed));
}
public void advance(){
this.currentPosition = this.currentPosition + 1;
if(this.currentPosition == this.corridorLength){
System.out.println("Game Over");
}
}
public void printDamage(){
System.out.println(this.towers.get(this.currentPosition));
}

}

主要关注的是 public void addTower(int, int)所以,我有一个名为 Tower 的子类:

public class Tower extends Game {

public Tower(int damage, int timeStep){
super.addTower(damage,timeStep);
}
public void getDamage(){
super.printDamage();
}
}

塔子类的子类称为弹射器:

public class Catapult extends Tower {
public Catapult(){
super(5,3);
}

}

我是 Java 新手,看不出我在这里做错了什么。为什么游戏中的塔需要一个默认构造函数?

最佳答案

您需要在 Game 类中显式声明默认构造函数。

public Game (){} 

由于 Object 实例化期间链接到 Object 类,因此它将调用其父类(super class)构造函数。您已在 Game 中显式声明了 arg-constructor,因此不会自动添加默认构造函数。

关于java - 父类(super class)中没有可用的构造函数(Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46620482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com