2013-04-28 3 views
1

J'ai une classe personnalisée appelée 'Quad' qui crée un quad texturé à utiliser comme sprite dans mon jeu 2D OpenGL ES 2.0.Impossible d'accéder à la variable de la sous-classe d'objet? (Java/Android)

public class Quad(){ 

//Quad creation stuff here 

} 

J'ai une sous-classe séparée (dans un fichier différent - pas une classe interne)

public class hero extends Quad(){ 

//Variables relating specifically to this character 
int heroX = 0; 
int heroY = 0; 

} 

Je crée mon objet comme ceci:

Quad hero = new Hero(); 

Cependant, si je tente pour accéder aux variables 'heroX' et 'heroY', je n'ai rien .....

Alors je vais essayer

hero.heroX 

mais ce qui précède ne sélectionne pas cette variable.

Il le fera. Toutefois, recherchez les variables situées dans ma classe Quad. Mais j'aurais pensé qu'en étendant ma classe Quad à ma classe de Héros, ils seraient disponibles à travers mon objet.

Quelqu'un pourrait-il expliquer où ma pensée va mal et comment je peux accéder à ces 2 variables? Merci

Répondre

1

Votre variable hero est de type Quad, pas le type Hero, par conséquent le compilateur sait seulement qu'il s'agit d'un Quad. Utilisez le sous-type spécifique si vous souhaitez accéder aux méthodes Hero.

+0

S'il utilise son accesseurs .. Je ne pense pas que ce soit le problème. Dans d'autres langues, peut-être. Sinon, ma réponse est atrocement fausse. –

+0

@LewsTherin - la réponse correcte est que l'accès et le type correct sont requis. Java, par contre, est un paquet privé par défaut (donc toutes les classes du même paquet peuvent lire ces variables), pas privées. – ianhanniballake

+0

Oui @ianhanniballake, je viens de le déclarer comme Héros, alors maintenant je dis Hero hero = new Hero(); et ça marche bien - en faisant cela, je peux accéder à toutes les méthodes et variables des classes Quad et Hero - pourquoi est-ce? Sûrement si je déclare un héros comme un Quad(), et quand je crée l'objet, créez-le comme un nouveau 'Héros' (qui est aussi un Quad) - le compilateur sait sûrement que c'est un héros aussi bien qu'un Quad? Si non, quel serait le point de dire "Quad hero = new Hero() - dont j'ai vu plusieurs fois dans le code Java ... confus !! : -/ – Zippy

Questions connexes