Polymorphisme. Aide SVP

dandyjulio Messages postés 3 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 15 juillet 2004 - 15 juil. 2004 à 12:01
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 - 16 juil. 2004 à 15:19
J'ai codé une classe Livre, pour laquelle j'ai redéfini les méthodes ToString et Equals.


Public Overrides Function ToString() As String
Return ("Titre : " + Me._titre + " ; Auteur : " + Me._auteur )
End Function

Public Overloads Overrides Function equals(ByVal li As Object) As Boolean Return (Me.auteur li.auteur And Me.titre li.titre)
End Function

Voila un extrait de mon main:

Dim li1 As Livre = New Livre("Germinal", "Zola")
Dim li4 As Object = New Livre("Germinal", "Zola")

Console.WriteLine("Essai 1 : " + li4.equals(li1).ToString )
Console.WriteLine("Essai 2 : " + li4.ToString )

Voila mon Pb:
Essai 1 : la méthode equals de ma classe Livre n'est pas appélée
(Je m'attendais à ce qu'elle le soit)

Essai 2 : la méthode ToString est bien appelée

Je ne comprends pas pourquoi il y a deux comportements différents alors que les méthodes sont appelées de manière similaire. (J'ai bien mis Overrides pour les deux méthodes)

Eternelle reconnaissance à celui qui pourra me donner une explication satisfaisante.
Merci d'avance

3 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
15 juil. 2004 à 23:12
t'es sur au moins que ca compile ?

car moi cette ligne je la compilerais pas :d
Return (Me.auteur li.auteur And Me.titre li.titre)

li est de type object

or object.auteur n'existe pas ... donc logiquement ca devrais pas compiler ....

transforme la ligne en :
Return (Me.auteur ctype(li,Livre).auteur And Me.titre ctype(li,Livre).titre)

par contre je sais pas si il va accpeté le ctype vu qu'il est dans sa classe ...
mais je pense que ca devrait mieux marcher

@+

Cyril
0
dandyjulio Messages postés 3 Date d'inscription jeudi 15 juillet 2004 Statut Membre Dernière intervention 15 juillet 2004
16 juil. 2004 à 09:44
J'suis sur que ça compile puisque je l'ai testé la fonction.
De toute facon, mon problème c'est que cette fonction n'est pas appelée.
S'il y avait une erreur dedans, cela ne changerait rien au fait qu'elle n'est pas appelée...
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
16 juil. 2004 à 15:19
t'as essayé ce que je t'ai dit ?

car si il y a une erreur, tu auras une exception de gere pour peu que ton code soit dans un bloc try catch, tu ne verras peut etre meme pas que ta fonction est appelé et genere une erreur ...

modifie ce que j'ai dit, normalement ca devrait marcher

Cyril
0
Rejoignez-nous