|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 249 ![]() |
Bonjour tout le monde,
j'ai une petite question de type programmation objet, donc voila c'est quoi la différence entre ces deux codes Code :
En testant un héritage d'un DataGrid sans mettre le mot clé super () dans le constructeur de la sous classe, j'arrive comme même à rentrer dans le constructeur de la classe mère et initialiser la hauteur de la ligne ..... voila si quelqu'un a une réponse je suis preneur Merci Samy
__________________
http://www.m-ataf.com (En cours de construction) |
||
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() |
Hello,
En effet tu as fais la bonne analyse. Quand tu fais hériter une classe à une autre, la classe enfant se retrouve dotée des attributs protected ou public de la classe parente ainsi que de son type: En prenant ton exemple, si tu fais une méthode qui réclame en param un objet de type A, tu peux également lui passer un type B puisque le type B est également un type A, mais attention l'inverse n'est pas vrai. Si tu fais une méthode qui réclame un type B tu ne peux pas lui passer un type A car A n'hérite pas de B... Mais ta classe enfant n'est pas obligée d'instancier la classe parente pour pouvoir fonctionner. Maintenant quand tu fais super(), c'est parce que tu n'es pas sensé savoir ce que fais le constructeur de l'objet parent (principe d'encapsulation). Il initialise certainement des propriétés qui sont utilisées au sein du framework... Tu n'es pas obligé de le faire mais il est recommandé de le faire. de la même manière quand tu fais un override de méthode, il est également recommandé de faire un appel à la méthode de la classe parente. Voilà j'espère avoir répondu à ta question.
__________________
Si je vous poste un bout de code pour vous aider, prenez bien en compte que je n'ai pas testé ce que je vous poste et que je vous donne les grandes lignes. Donc ne me dites pas : "Ca marche pas ton truc, y a une erreur..." |
|
|
00
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 249 ![]() |
Bonjour, Merci pour cette réponse complète.
Cependant mon interrogation portait sur le faite que sans mettre le mot clé super() dans le constructeur de la sous-classe j'arrive à rentrer dans le constructeur de la classe mère pour exécuter comme tu dis quelques actions qui initialisent quelques attribut .......... alors que normalement on ne doit pas rentrer dans le constructeur de la classe mère. Je ne sais pas si je suis claire ou pas je l'espere en tous les cas Merci Samy
__________________
http://www.m-ataf.com (En cours de construction) |
|
|
00
|
|
|
#4 | |
![]() ![]() Consultant Flex / Java Inscription : novembre 2008 Messages : 452 ![]() |
Salut,
Citation:
|
|
|
|
00
|
|
|
#5 |
|
Membre habitué
![]() |
Ouais je me rends compte en lisant le code posté que dans ma tête B héritait de A mais en fait c'est A qui hérite de B
Donc reprendre mon explication en inversant A et B
__________________
Si je vous poste un bout de code pour vous aider, prenez bien en compte que je n'ai pas testé ce que je vous poste et que je vous donne les grandes lignes. Donc ne me dites pas : "Ca marche pas ton truc, y a une erreur..." |
|
|
00
|
|
|
#6 |
![]() ![]() Développeur informatique Inscription : octobre 2006 Messages : 1 604 ![]() |
Bonjour à tous,
Le constructeur de la classe de base est toujours exécuté, si super n'est pas appelé l'instruction est ajoutée (par le compilateur ?) au début du constructeur de la classe étendue. Donc le super peut servir à exécuter des instructions avant l'appel à super (qui est de toute façon appelé). Pour les méthodes c'est différents, on peut choisir de ne pas exécuter la méthode de la classe de base (par défaut) ou d'appeler super.maMethode(). |
|
|
00
|
|
|
#7 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 249 ![]() |
bonjour beekeep, merci pour ta réponse, la je comprends mieux pourquoi je rentre dans le constructeur de la classe de base sans le mot clé super, est il possible que ça soit une spécificité de flex ou bien le java .NET le font aussi
merci encore pour tes précisions Samy
__________________
http://www.m-ataf.com (En cours de construction) |
|
|
00
|
|
|
#8 |
|
Membre habitué
![]() |
Ha bah je me coucherai moins bête ce soir
Merci
__________________
Si je vous poste un bout de code pour vous aider, prenez bien en compte que je n'ai pas testé ce que je vous poste et que je vous donne les grandes lignes. Donc ne me dites pas : "Ca marche pas ton truc, y a une erreur..." |
|
|
00
|
|
|
#9 | |
|
Membre éclairé
![]() Inscription : janvier 2004 Messages : 319 ![]() |
Citation:
Il n'est donc pas obligatoire de le préciser. Comme en AS3.
|
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com