No enclosing instance of type is accessible
Résolu
domxaline
-
domxaline -
domxaline -
Bonjour,
en compilant mon prg,j'ai eu cette erreur, veuillez m'aidez svp:
"No enclosing instance of type Personnage is accessible. Must qualify the allocation with an enclosing instance of type Personnage
(e.g. x.new A() where x is an instance of Personnage)."
en compilant mon prg,j'ai eu cette erreur, veuillez m'aidez svp:
"No enclosing instance of type Personnage is accessible. Must qualify the allocation with an enclosing instance of type Personnage
(e.g. x.new A() where x is an instance of Personnage)."
public abstract class Personnage
{
public void seDeplacer()
{
System.out.println("Je me déplace à pied.");
}
public void combattre()
{
System.out.println("Je ne combat pas!");
}
public class Guerrier extends Personnage
{
public void combattre()
{
System.out.println("Fusil,Pistolet,Couteau! Tous ce que tu veux!");
}
}
public class Medecin extends Personnage
{
public void combattre()
{
System.out.println("Vive le scalpel!");
}
public void soigner()
{
System.out.println("Je soigne les blessures.");
}
}
public class Civil extends Personnage
{
public void combattre()
{
System.out.println("Je ne combat pas!");
}
public void seDeplacer()
{
System.out.println("Je me déplace à pied.");
}
}
public class Chirurgien extends Personnage
{
public void combattre()
{
System.out.println("Je ne combat pas!");
}
public void seDeplacer()
{
System.out.println("Je me déplace à pied.");
}
public void soigner()
{
System.out.println("Je fais des opérations.");
}
}
public class Sniper extends Personnage
{
public void combattre()
{
System.out.println("Je me sers de mon fusil à lunette!");
}
public void seDeplacer()
{
System.out.println("Je me déplace à pied.");
}
}
public static void main(String[]args)
{
Personnage[]tPers=
{new Guerrier(),new Chirurgien(),new Civil(),new Sniper(), new Medecin()};
for(Personnage p:tPers)
{
System.out.println("\nInstance de "+p.getClass().getName());
System.out.println("******************************************************");
p.combattre();
p.seDeplacer();
}
}
}
A voir également:
- No enclosing instance of type is accessible. must qualify the allocation with an enclosing instance of type
- No enclosing instance of type main is accessible. must qualify the allocation with an enclosing instance of type main (e.g. x.new a() where x is an instance of main). - Meilleures réponses
- No enclosing instance of type is accessible. must qualify the allocation with an enclosing instance of type (e.g. x.new a() where x is an instance of - Meilleures réponses
- What is my movie français - Télécharger - Divers TV & Vidéo
- Hns-accessible-system-folder ✓ - Forum Réseau
- No tftp response ✓ - Forum Mobile
- Input signal out of range ✓ - Forum Matériel & Système
- No available networks no response from server iron tv pro - Forum TV & Vidéo
9 réponses
Le problème c'est que tu as fait
Or cela n'est pas possible, car les objets de B doivent dépendre des objets de A.
Il faudrait faire :
Or dans ton cas c'est impossible car A est une classe abstraite ! Il faudrait donc utiliser une implémentation de A, mais les seules implémentations que tu as c'est B...
Première solution, tu considères que la classe B est static, elle ne dépend donc plus des objets de A mais de la classe, il n'est donc plus nécessaire d'instancier un objet A.
Deuxième solution, qui est à mon avis la meilleure dans ton cas, tu ne fais pas de classes internes, mais tu mets chaque classe dans son propre fichier.
public class A
{
public class B
{
}
}
B b = new B();
Or cela n'est pas possible, car les objets de B doivent dépendre des objets de A.
Il faudrait faire :
A a = new A(); B b = a.new B();
Or dans ton cas c'est impossible car A est une classe abstraite ! Il faudrait donc utiliser une implémentation de A, mais les seules implémentations que tu as c'est B...
Première solution, tu considères que la classe B est static, elle ne dépend donc plus des objets de A mais de la classe, il n'est donc plus nécessaire d'instancier un objet A.
public class A
{
public static class B
{
}
}
A.B b = new A.B();
Deuxième solution, qui est à mon avis la meilleure dans ton cas, tu ne fais pas de classes internes, mais tu mets chaque classe dans son propre fichier.
public class A
{
}
public class B
{
}
B b = new B();