Je fais actuellement une aventure textuelle en Java aux fins de l'utilisation d'une plate-forme de test, d'essayer de nouvelles choses que j'apprends de ce livre Java que je lis.
J'essaie maintenant de déclarer une instance d'une sous-classe (comme le joueur est script pour le trouver).
La classe des parents est Cependant, peu importe que je Essayez de le déclarer, l'IDE que j'utilise (Eclipse) flagrie la ligne avec l'erreur suivante: p> aucun instance de type d'élément de type est accessible. Doit qualifier l'allocation avec une instance de type d'élément de type enfermer (E.G.New a () où X est une instance d'élément). P>
BlockQuote> Lorsque j'essaie de le déclarer comme l'une des opérations suivantes: p> pour référence La classe d'élément ressemble à ceci: p> élément code> et il comporte deux sous-classes:
arme code> et
armure code>. P>
package JavaAIO;
public class Item
{
public String itemName;
public double itemWeight;
public class Weapon extends Item
{
public double damage;
public double speed;
}
public class Armour extends Item
{
public double dmgResist;
public double attSpdMod;
}
}
3 Réponses :
Pour ce faire:
Item machinePistol = new Item(); Item machinePistol = new Weapon(); Item someArmour = new Armour();
Wow, merci, la plupart des personnes gentilles ne pensaient pas que c'était aussi simple.
Vous ne devriez pas déclarer les classes afin que vous puissiez les installer comme ceci: p> arme code> et
armure code> intérieur em>
élément code>. Il suffit de les déclarer dehors em>:
J'ai essayé cela aussi, mais cela dit simplement "l'armure de type public doit être définie dans son propre fichier"
@James Oui, vous devriez avoir un fichier pour chacune des trois classes que vous définissez car elles ne sont pas des classes intérieures.
Droite, je vais en une combinaison de cela et ce que certaines des réponses d'autres réponses ont dit, merci beaucoup que vous avez des gars très vite à répondre!
"Pas d'instance de type d'élément de type est accessible. Doit qualifier l'allocation avec une instance de type d'élément de type (EGXNew a () où X est une instance d'élément) forte>." P >
C'est assez expliquant auto-expliquant: p>
xxx pré> ou: p>
xxx pré> Cependant, je vous recommande fortement de les mettre dans leurs propres classes afin que vous puissiez vous retrouver avec: p>
xxx pré> blockQquote>
Cela fonctionne aussi, mais pourquoi vous recommandez-vous fortement de les mettre dans leurs propres cours?
Pour que vous puissiez créer une arme sans les frais généraux inutiles pour créer d'abord un article. De plus, les classes intérieures sont généralement censées utiliser par leur classe parent (sous) exclusivement. S'ils sont toujours utilisés à l'extérieur, il est grand temps de les refroidir dans leurs propres cours.
Déclarant les classes intérieures statique code> évite également le surcharge supplémentaire (vous permettant de les instantiez avec
nouvel élément.weapon () code> - quel @Joel montre très bien dans sa réponse). Je suis toujours d'accord que dans ce cas, il serait préférable de les mettre de leur propre portée.
Cela devrait être aussi pratique: télécharger.oracle.com/javase/taturial /java/javaoo/ntested.html
Merci pour cela, merci également à Wesley pour avoir édité mon extrait de code, il semble donc d'avoir raison.
Dupliqué possible de Java - aucune instance de type FOO est accessible < / a>