probleme d'héritage

probleme d'héritage - Java - Programmation

Marsh Posté le 08-03-2005 à 17:28:34    

c'est encore moi  :o  :whistle:  
 
j'aimerais une petite précision sur l'héritage...
 
soit 2 classes :
 

Code :
  1. class A {
  2. public A meth() {
  3. (...)
  4. }
  5. class B extends A {
  6. public B meth() {
  7. (...)
  8. }


 
voila le probleme c'est que je ne sais pas comment faire pour implementer la méthode meth dans la classe B.
le type de retour fait il parti de la signature ?
 
si je le fais passer en redéfinition il me dit que ce n'est pas le même type de retour... :sweat:  
 
merci pour votre aide  :hello:


Message édité par tomtom41 le 08-03-2005 à 17:28:57
Reply

Marsh Posté le 08-03-2005 à 17:28:34   

Reply

Marsh Posté le 08-03-2005 à 18:26:55    

garde la signature public A meth(), sachant tu peux renvoyer un B sachant que c'est un A :)


Message édité par EpoK le 08-03-2005 à 18:27:57
Reply

Marsh Posté le 08-03-2005 à 18:29:34    

EpoK a écrit :

garde la signature public A meth(), sachant tu peux renvoyer un B sachant que c'est un A :)


 
ah oui bien vu  :) le polymorphisme c'est ca  :D ?

Reply

Marsh Posté le 08-03-2005 à 18:42:17    

euh j'ai un doute là...
oui je peux renvoyer un B car c'est un A mais je ne peux pas le ranger dans un B étant donné que c'est un A...donc ca coince...:??:

Reply

Marsh Posté le 08-03-2005 à 18:46:41    

Euh pkoi tu pourrais pas?
Un A, c'est un B light...
Au pire, tu castes: tonNouveauB = (B)tonAncienB.meth()

Reply

Marsh Posté le 08-03-2005 à 19:00:39    

merci c'est le cast qu'il me manquait :)

Reply

Marsh Posté le 08-03-2005 à 22:39:55    

en java1.5, tu peux garder la signature avec le type de retour B, c'est d'ailleur plus propre si c'est effectivement toujours un B que tu renvois : ca évite de devoir caster dans les cas où tu te sers directement d'un objet de type B plutot qu'un objet de type A.
 
en java < 1.5, ce n'était pas possible : pour surcharger une méthode, tu étais obligé de garder exactement la même signature.
 
Cette fonctionnalité ajouté dans le java1.5 s'apelle le type de retour covariant.

Reply

Marsh Posté le 09-03-2005 à 19:42:32    

benou a écrit :

en java1.5, tu peux garder la signature avec le type de retour B, c'est d'ailleur plus propre si c'est effectivement toujours un B que tu renvois : ca évite de devoir caster dans les cas où tu te sers directement d'un objet de type B plutot qu'un objet de type A.
 
en java < 1.5, ce n'était pas possible : pour surcharger une méthode, tu étais obligé de garder exactement la même signature.
 
Cette fonctionnalité ajouté dans le java1.5 s'apelle le type de retour covariant.


 
je savais pas  :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed