Soucis Heritage + Tableau de classes

letitouline Messages postés 14 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 24 octobre 2010 - 24 oct. 2010 à 14:40
letitouline Messages postés 14 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 24 octobre 2010 - 24 oct. 2010 à 20:00
Bonjour,

je me permets de poster un message, suite a un blocage que j'ai au niveau de mon code. Je sais ou j'ai l'erreur, mais je ne comprend pas comment la contourner (du moins avec les notions que je connais).

J'ai créé 2 classes, une appelée Case contenant une variable number de type int, et une autre appelée Tax héritant de Case et possédant une variable propre cost de type int.

En parallèle, j'ai fait ceci :

Case[] map = new map[1];
map[0] = new Case(12);
map[1] = new Tax(13, 100000);

Jusqu'ici tout va bien, le soucis c'est pour accéder a la variable cost de Tax. En effet si je fait : map[1].cost, cela ne marche pas puisque mon tableau est de type Case (plus général que Tax), enfin j'imagine que c'est pour sa....

Existe-t-il donc un moyen de pouvoir créer un tableau d'objets différents, me permettant par la suite d'accéder aux variables de tel ou tel objet, même si ces objets sont différents entre eux.

J'avais pensé a la généricité, mais je ne suis pas sur que cela puisse donner quelque chose.

Il est possible que je n'ai pas toujours utilisé les mots exact, je suis débutant.

N'hésitez pas a me demander plus d'explications sur ce que je veux faire, j'essayerais de répondre clairement.

Merci.

6 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
24 oct. 2010 à 19:24
Salut,

La solution est bien plus simple que tu l'imagines : il suffit de caster le type de ton objet dans le type concret de l'objet réel :

Case[] map = new map[1]; 
map[0] = new Case(12); 
map[1] = new Tax(13, 100000); 
//...
Tax tax = (Tax) map[1];
//tu peux utiliser l'objet tax comme bon te semble maintenant

______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
letitouline Messages postés 14 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 24 octobre 2010
24 oct. 2010 à 19:28
Salut DARKSIDIOUS,

ok j'avais déjà essayé de Caster, mais je m'y été vraiment mal pris.

Je vais tester sa, merci beaucoup pour ta réponse =)

Bonne soirée
0
letitouline Messages postés 14 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 24 octobre 2010
24 oct. 2010 à 19:47
Je pense que le soucis vient d'autre part.

En effet, mon tableau map, je le pass en argument a une autre fonction.
Donc dans la declaration de fonction j'ai :

void static fonction1(Case map)
{
if (map[1].name = "Tax")
{
Tax tax = (Tax) map[1]; // Erreur
}
}

et c'est dans cette fonction que j'essaye d'atteindre l'objet Tax, contenu dans map[1].
Sauf que meme avec un cast, sa ne fonctionne pas, l'erreur est :
"The type of the expression must be a array type but it resolved to a Case".

Peut-etre l'erreur vient du fait que je passe justement en argument la map sous le type Case ?
0
letitouline Messages postés 14 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 24 octobre 2010
24 oct. 2010 à 19:50
public static void fonction1(Case map) etc...

Autant pour moi...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
24 oct. 2010 à 19:57
Salut,

Attention, là tu ne passes pas ton tableau en paramètre mais une seule instance de ta classe Case, c'est différent.

Je te conseille d'utiliser les Collection (par exemple les ArrayList ou les Vector) en Java plutôt que les tableaux natifs : bien plus faciles à manipuler, il te rendront bien des services je pense.
______________________________________

AVANT de poster votre message, veuillez lire, comprendre, et appliquer notre réglement
0
letitouline Messages postés 14 Date d'inscription lundi 5 novembre 2007 Statut Membre Dernière intervention 24 octobre 2010
24 oct. 2010 à 20:00
Ok, je vais essayer sa. J'en ai entendu parlé mais je ne les ai jamais manipulé.

Merci DarkSidious, et désolée pour les 3 messages d'affilés tantôt.

Bonne soirée.
0
Rejoignez-nous