Heritage en java

jeuneDebutant Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
jeuneDebutant Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je dois realiser un programme et j'ai une petite question concerant l'héritage entre classe en java.

Supposons que j'ai une class A suivie de deux classe qui héritent de A : class B et class C.

On a donc,
- class A
methode 1a
...
- class B extends A
methode 1b
...
- class C extends A
methode 1c
...

Si j'ai un objet "b" de la classe B alors je peux utiliser les méthodes de la class B(methode 1b,...) ainsi que les méthodes de la class A(méthode 1a,...) en ecrivant b.methode1b() ou b.methode1a.

Mon problème est que j'ai un tableau d'élement de class A. Par conséquent, ces éléments sont de la forme B ou C. Lorsque je veux faire T[x].methode1b() pour un x fixé, ca marche pas! Par contre, T[x].methode1a oui.

J'ai ecris ensuite if (T[x] instanceof class B){ T[x].methode1b()} mais ca marche toujours pas!

Est-ce que c'est que pour lui, T[x] est un élément A mais il sait pas le reconnaitre comme élément B. Y-a-t-il une methode? un mot clé?

*ps. J'espère avoir été le plus clair possible.

Merci d'avance pour votre aide.
A voir également:

5 réponses

bqst Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   24
 
Où se trouve ton tableau d'élément de class A ?
0
jeuneDebutant Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Dans une autre classe.

C'est assez compliqué je sais mais j'ai une classe D si tu veux qui est un tableau d'élément de A.

public class D{

A [] t;
int taille;

ou t est le tableau et pas "T" comme j'ai ecrit en haut.
0
chuka Messages postés 965 Date d'inscription   Statut Membre Dernière intervention   378
 
Salut,
Tu as essayé:
if (T[x] instanceof class B)
{
((B)T[x]).methode1b();
}
0
jeuneDebutant Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
ben si j'écris (B(t[x]).methode1b() ) ou (B(t[x])).methode1b ca me souligne plus en rouge methode1b comme avant ce qui est une bonne chose mais par contre, ca me souligne B.
0
bqst Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   24
 
Essaye de casté tout ça
(A) T[x].methode1b()
0
jeuneDebutant Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Ca ne change rien si j'ecrit (A)t[x].methode1b();
0

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

Posez votre question
bqst Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   24
 
Jme suis trompé, jviens de faire un petit schéma, je t'explique avec un exemple:
Tu as A qui représente la classe Animal,
B représente la classe Mouton qui extends d'Animal,
Ta methodeB correspond à Crier par exemple,
C représente la classe Bergerie qui contient un tableau d'"Animal".
Donc si tu veux appeler la méthode Crier de Mouton il faut que la case de ton tableau soit en Mouton, c'est à dire qu'il faut "casté" la case du tableau A en B
Normalement ça se fait ((B)t[x]).methodeB();
essaye :p
0
jeuneDebutant Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Ok. Ca marche. J'ai compris la méthode maintenant.

Merci beaucoup pour ton aide.
0