Конструктор - не может найти символ - PullRequest
0 голосов
/ 18 февраля 2012

Я пытаюсь скомпилировать программу, которая имеет подкласс DramaticGame, Game.Подкласс содержит следующее:

public class DramaticGame extends Game
{
  public DramaticGame(String machineName, int machineSize, String rackName, int rackSize)
  {
    super.makeMachine(machineName, machineSize);
    super.makeRack(rackName, rackSize);
  }
}

DramaticGame.java: 5: невозможно найти символ

symbol: конструктор Game ()

location: class Game

{

^

Он говорит, что не может найти символ "{" в игре, но я не уверен, как это исправить.

public Game(String paramString1, int paramInt1, String paramString2, int paramInt2)
{
  this.machine = makeMachine(paramString1, paramInt1);
  this.rack = makeRack(paramString2, paramInt2);
}

Ответы [ 2 ]

1 голос
/ 18 февраля 2012

В вашем суперклассе отсутствует конструктор по умолчанию, который вызывается неявно, если вы не выполните

super(eventual params);

в качестве первого оператора в вашем конструкторе.

0 голосов
/ 18 февраля 2012

Нет, он не может найти конструктор по умолчанию.

Компилятор создаст конструктор по умолчанию без аргументов, если вы не предоставите никаких конструкторов.

Но в тот момент, когда вы пишете один, вы сами.

Я бы посоветовал вам написать тот, который вызывает тот, который вы уже написали, с аргументами по умолчанию:

public class DramaticGame extends Game
{
  public DramaticGame() {
      this("default-machine-name", 1024, "default-rack-name", 10); 
  }

  public DramaticGame(String machineName, int machineSize, String rackName, int rackSize)
  {
    super.makeMachine(machineName, machineSize);
    super.makeRack(rackName, rackSize);
  }
}

Я также хотел бы знать, должен ли ваш конструктор Game брать имя и размер стойки. Тот факт, что они являются членами класса Game, подсказывает мне, что они должны быть установлены в конструкторе Game.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...