Principe d'héritage encore flou, besoin d'explication de code.
Fermé
dx3d
Messages postés
68
Date d'inscription
dimanche 6 septembre 2009
Statut
Membre
Dernière intervention
19 juillet 2017
-
Modifié par dx3d le 23/05/2014 à 00:37
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 23 mai 2014 à 07:59
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 23 mai 2014 à 07:59
A voir également:
- Principe d'héritage encore flou, besoin d'explication de code.
- Code ascii de a - Guide
- Code puk bloqué - Guide
- Code de déverrouillage oublié - Guide
- Code activation windows 10 - Guide
- Code gta 4 ps4 - Guide
2 réponses
cs_ikhar
Messages postés
58
Date d'inscription
jeudi 26 avril 2007
Statut
Membre
Dernière intervention
24 mai 2014
2
Modifié par cs_ikhar le 23/05/2014 à 01:16
Modifié par cs_ikhar le 23/05/2014 à 01:16
Bonjour,
J'aurais vraiment aimé vous aidé, mais cela fait plus de 13 ans que je n'ai pas pratiqué Java... la faute à .net...
J'aimais pourtant particulièrement ce langage, lorsqu'il relevait encore de SUN... (hors sujet...)
Vous avez lu ceci ?
https://openclassrooms.com/fr/courses/6173501-debutez-la-programmation-avec-java?archived-source=26832
https://user.oc-static.com/pdf/10601-apprenez-a-programmer-en-java.pdf
En attendant qu'un developpeur Java se reveille...
Cordialement...
Edit:
Après vérification (très rapide, due à l'heure, et aux lointains souvenirs de Java...):
Vous semblez avoir un problème de trans-typage, vous passez vous à certaines de vos méthodes des Objet d'un type différent à celui qu'elles attendent, sans les "caster", de classe parente, ou enfant, alors qu'elles attendent de leur propre classe... votre problème ne viendrait il pas de là?
https://openclassrooms.com/forum/sujet/heritage-et-transtypage-33414#.U35_LdJ_tps
Si il me reste quelques souvenirs, l'héritage permet, entre autre, la spécialisation des classes filles...
Ainsi, un peut définir une classe EtreVivant, avec des classe filles Poisson et Humain, par exemple...
La Classe mère aura une méthode respire() vide...
Si on implémente une méthode respire() pour chaque classe fille:
Poisson.respire () {
aspirer l'eau m'entourant
la filtrer avec mes branchies
en retirer l'oxygène
}
Humain.respire() {
aspirer l'air qui m'entoure
l'envoyer vers mes poumons
en retirer l'oxygène
y transferer le CO2
expirer
}
cela permet de gérer un Objet générique EtreVivant, sans avoir besoin de connaitre les spécificité de sa méthode respirer()...
typiquement quand on n'a pas besoin de connaitre sa classe exacte...
désolé pour l'algo approximatif...
https://miashs-www.u-ga.fr/prevert/Prog/Java/CoursJava/classes2.html
--
J'aurais vraiment aimé vous aidé, mais cela fait plus de 13 ans que je n'ai pas pratiqué Java... la faute à .net...
J'aimais pourtant particulièrement ce langage, lorsqu'il relevait encore de SUN... (hors sujet...)
Vous avez lu ceci ?
https://openclassrooms.com/fr/courses/6173501-debutez-la-programmation-avec-java?archived-source=26832
https://user.oc-static.com/pdf/10601-apprenez-a-programmer-en-java.pdf
En attendant qu'un developpeur Java se reveille...
Cordialement...
Edit:
Après vérification (très rapide, due à l'heure, et aux lointains souvenirs de Java...):
Vous semblez avoir un problème de trans-typage, vous passez vous à certaines de vos méthodes des Objet d'un type différent à celui qu'elles attendent, sans les "caster", de classe parente, ou enfant, alors qu'elles attendent de leur propre classe... votre problème ne viendrait il pas de là?
https://openclassrooms.com/forum/sujet/heritage-et-transtypage-33414#.U35_LdJ_tps
Si il me reste quelques souvenirs, l'héritage permet, entre autre, la spécialisation des classes filles...
Ainsi, un peut définir une classe EtreVivant, avec des classe filles Poisson et Humain, par exemple...
La Classe mère aura une méthode respire() vide...
Si on implémente une méthode respire() pour chaque classe fille:
Poisson.respire () {
aspirer l'eau m'entourant
la filtrer avec mes branchies
en retirer l'oxygène
}
Humain.respire() {
aspirer l'air qui m'entoure
l'envoyer vers mes poumons
en retirer l'oxygène
y transferer le CO2
expirer
}
cela permet de gérer un Objet générique EtreVivant, sans avoir besoin de connaitre les spécificité de sa méthode respirer()...
typiquement quand on n'a pas besoin de connaitre sa classe exacte...
désolé pour l'algo approximatif...
https://miashs-www.u-ga.fr/prevert/Prog/Java/CoursJava/classes2.html
--
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
23 mai 2014 à 07:59
23 mai 2014 à 07:59
Bonjour,
Lorsque tu fais
Seulement la méthode
Il peut être intéressant pour comprendre ce qu'il se passe d'afficher le type réel de l'objet qui est appelé. Je t'invite donc à rajouter ce petit code au début de chaque méthode.
En adaptant bien sûr les valeurs qu'il faut. Exemple :
Lorsque tu fais
o=new C(); o.m(p);l'objet
oappelle toujours la méthode
mde la classe
Cavec les paramètres
p.
Seulement la méthode
m(p)peut être spécifique à la classe
Cparce que explicitement (re)définie dans son code, ou alors être définie par une classe mère, dans ce cas elle aura le même comportement que pour tous les objets de cette classe mère.
Il peut être intéressant pour comprendre ce qu'il se passe d'afficher le type réel de l'objet qui est appelé. Je t'invite donc à rajouter ce petit code au début de chaque méthode.
System.out.printf("# o.m(p), o instanceof %s, p instanceof %s\n", getClass().getSimpleName(), p.getClass().getSimpleName());
En adaptant bien sûr les valeurs qu'il faut. Exemple :
public void bar(B b){ System.out.printf("# o.bar(b), o instanceof %s, b instanceof %s\n", getClass().getSimpleName(), b.getClass().getSimpleName()); System.out.format("B.bar(%s)\n",b.name()); }