2010-12-06 15 views
0

Ceci est ma classe enfant:J'ai un problème à la classe enfant de super()

public class User extends Alien 
{ 

protected XYCoordination currentLocation; 
protected int energyCanister; 
protected int lifePoints; 

public User (XYCoordination currentLocation, int energyCanister, int lifePoints) 
{ 
    super(currentLocation); 
} 
public int collectCanister() 
{ 
    super.collectCanister(); 
    return energyCanister; 
} 
public int caculateLifePoints(int lifePoints) 
{ 
    super.caculateLifePoints(lifePoints); 
    return lifePoints; 
} 
} 

Voici ma classe parente:

public class Alien 
{ 
protected XYCoordination currentLocation; 
protected Planet currentPlanet; 
protected int energyCanister; 
protected int lifePoints; 
protected int n; 

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

public XYCoordination moveRight(XYCoordination toRight) 
{ 
    currentLocation = currentLocation.addXToRight(toRight); 
    return currentLocation; 
} 
public XYCoordination moveUp(XYCoordination toUp) 
{ 
    currentLocation = currentLocation.addYToUp(toUp); 
    return currentLocation; 
} 
public XYCoordination moveLeft(XYCoordination toLeft) 
{ 
    currentLocation = currentLocation.addXToLeft(toLeft); 
    return currentLocation; 
} 
public XYCoordination moveDown(XYCoordination toDown) 
{ 
    currentLocation = currentLocation.addYToDown(toDown); 
    return currentLocation; 
} 
public int collectCanister() 
{ 
    energyCanister = energyCanister + (int)(n*currentPlanet.getRemainingCanister()); 
    return energyCanister; 
} 
public int caculateLifePoints(int lifePoints) 
{ 
    lifePoints = (int)((2/3)*lifePoints); 
    return lifePoints; 
} 
public void displayInfo() 
{ 
    System.out.print("Currently you are in:" + currentLocation + "\t Currently you have" + energyCanister + "canisters" + "\tCurrently you have" + lifePoints + "lifepoints"); 
} 
} 

Il est dit toujours « ne peut pas trouver la symble 'super'. "

+1

Je ne vois rien dans votre code qui causerait * que * erreur de compilation. Copiez et collez l'erreur de compilation exacte et indiquez sur quelle ligne de votre code il se produit. –

Répondre

4

Votre super-classe doit avoir un constructeur qui correspond à la signature que vous appelez. Puisque vous avez

public User (XYCoordination currentLocation, ....) { 
    super(currentLocation); 
} 

la classe Alien vous étendons a besoin d'avoir un constructeur avec un correspondant de

public Alien(YCoordination currentLocation) 
+0

Pouvez-vous être plus précis? Je suis nouveau. –

+1

@Charles Cai - Je vous ai dit la même chose dans une question précédente que vous avez posée. –

+0

@CharlesCai: Avant de poster de telles questions, je pense que vous devez lire certaines des bases de Java comme indiqué dans le JLS. –

0

Quand vous dites
de super (CurrentLocation); Vous appelez le constructeur super classe (classe parent) avec l'argument unique currentLocation. Mais votre super classe Alien n'a pas de constructeur qui accepte un seul argument currentLocation. Dans ce contexte signifie: Vous essayez d'appeler un constructeur super classe avec un seul paramètre, mais je suis incapable de trouver un constructeur dans la super classe avec un argument unique currentLocation.

Vous vouliez probablement appeler super(currentLocation, energyCanister, lifePoints)