У меня есть некоторые проблемы с дочерним классом, как использовать super.method () - PullRequest
0 голосов
/ 06 декабря 2010

мой дочерний класс

public class User extends Alien
{

public User(XYCoordination currentLocation, int energyCanister, int lifePoints, String name)

{

super(currentLocation, energyCanister,lifePoints, name);

}

    public int collectCanister(NormalPlanet canister)
    {
        super.collectCanister();
        return energyCanister;
    }

}

мой родительский класс:

public class Alien
{

protected XYCoordination currentLocation;

protected Planet currentPlanet;

 protected int energyCanister;

 protected int lifePoints;

protected int n;

 private String name;

    public Alien(XYCoordination currentLocation, int energyCanister)
    {
        this.currentLocation = currentLocation;
        this.energyCanister = energyCanister;
        this.lifePoints = lifePoints;
        this.name = name;
    }

...

    public int collectCanister(NormalPlanet canister)
    {
        energyCanister = energyCanister + (int)(n*canister.getRemainingCanister());
        return energyCanister;
    }
...

}

когда я его компилирую, дочерний класс с

public int collectCanister(NormalPlanet canister)
{
    super.collectCanister();
    return energyCanister;
}

неза работой?Что я могу сделать?

Ответы [ 3 ]

1 голос
/ 06 декабря 2010
public User(XYCoordination currentLocation, int energyCanister, int lifePoints, String name)  {
   super(currentLocation, energyCanister,lifePoints, name);
}

Я не вижу, как это будет работать? Супер не содержит четырех параметров, только currentLocation и eneryCanister.

Вам нужно изменить подпись вашего инопланетного конструктора на

public Alien(XYCoordination currentLocation, int energyCanister, int lifePoints, String name)
1 голос
/ 06 декабря 2010

Во-первых, ваш super.collectCanister(...) принимает аргумент, а во-вторых, конструктор для Alien должен принимать еще два аргумента - в противном случае оба lifePoints и name не будут установлены !

Это ваш "новый" вызов метода super.collectCanister:

public int collectCanister(NormalPlanet canister)
{
    super.collectCanister(canister);
    return energyCanister;
}

И вот как должен выглядеть ваш конструктор для инопланетян:

public Alien(XYCoordination currentLocation, 
             int energyCanister, 
             int lifePoints, 
             String name) {
    ....
}
0 голосов
/ 06 декабря 2010

Ваш SuperKonstructor принимает только два аргумента:

public Alien(XYCoordination currentLocation, int energyCanister)
{
    this.currentLocation = currentLocation;
    this.energyCanister = energyCanister;
    this.lifePoints = lifePoints;
    this.name = name;
}

, а не четыре, как вы делаете это в своем подклассе.Кроме того, в вашем супер-конструкторе вы назначаете name и lifePoints полям этого класса, но lifePoinbts и name не являются аргументами конструктора.

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