Bonjour, je d=E9bute en Java et l=E0 j'ai une erreur que je ne comprends
pas du tout concernant une m=E9thode surcharg=E9e.
J'ai indiqu=E9 l'erreur dans le main.=20
L'instance "p" de Point2 (h=E9rit=E9e de Point) ne veut pas prendre la
m=E9thode surcharg=E9e "d=E9place" sans argument de Point2, elle accepte
juste la m=E9thode avec arguments de Point.=20
Pourquoi ?=20
Merci d'avance.
public class Helloworld=20
{
public static void main(String[] args){
Point p =3D new Point2();
p.deplace(); /* ERREUR ICI */=20
System.out.println(p.px + " " + p.py); =20
}
}
class Point{
int px,py;
=20
Point(){}
=20
Point(int x, int y){
px =3D x;
py =3D y;
}
=20
void deplace(int dx, int dy){
px +=3D dx;
py +=3D dy;
}
}
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
ownowl
Zarak a écrit :
Bonjour, je débute en Java et là j'ai une erreur que je ne comprends pas du tout concernant une méthode surchargée.
J'ai indiqué l'erreur dans le main. L'instance "p" de Point2 (héritée de Point) ne veut pas prendre la méthode surchargée "déplace" sans argument de Point2, elle accepte juste la méthode avec arguments de Point. Pourquoi ? Merci d'avance.
public class Helloworld {
public static void main(String[] args){ Point p = new Point2(); p.deplace(); /* ERREUR ICI */ System.out.println(p.px + " " + p.py); } }
bonjour c'est normal, une méthode surchargée se doit de comporter les mêmes paramètres. dans ton exemple tu appel la méthode deplace() sur un object Point, hors cette méthode n'existe pas dans la classe Point
Olivier
Zarak a écrit :
Bonjour, je débute en Java et là j'ai une erreur que je ne comprends
pas du tout concernant une méthode surchargée.
J'ai indiqué l'erreur dans le main.
L'instance "p" de Point2 (héritée de Point) ne veut pas prendre la
méthode surchargée "déplace" sans argument de Point2, elle accepte
juste la méthode avec arguments de Point.
Pourquoi ?
Merci d'avance.
public class Helloworld
{
public static void main(String[] args){
Point p = new Point2();
p.deplace(); /* ERREUR ICI */
System.out.println(p.px + " " + p.py);
}
}
bonjour
c'est normal, une méthode surchargée se doit de comporter les mêmes
paramètres.
dans ton exemple tu appel la méthode deplace() sur un object Point, hors
cette méthode n'existe pas dans la classe Point
Bonjour, je débute en Java et là j'ai une erreur que je ne comprends pas du tout concernant une méthode surchargée.
J'ai indiqué l'erreur dans le main. L'instance "p" de Point2 (héritée de Point) ne veut pas prendre la méthode surchargée "déplace" sans argument de Point2, elle accepte juste la méthode avec arguments de Point. Pourquoi ? Merci d'avance.
public class Helloworld {
public static void main(String[] args){ Point p = new Point2(); p.deplace(); /* ERREUR ICI */ System.out.println(p.px + " " + p.py); } }
bonjour c'est normal, une méthode surchargée se doit de comporter les mêmes paramètres. dans ton exemple tu appel la méthode deplace() sur un object Point, hors cette méthode n'existe pas dans la classe Point
Olivier
Sylvain SF
Zarak wrote on 03/09/2008 15:29:
Bonjour, je débute en Java et là j'ai une erreur que je ne comprends pas du tout concernant une méthode surchargée.
Point p = new Point2(); p.deplace(); /* ERREUR ICI */
tu peux surcharger (remplacer) une méthode avec la même signature (le même prototype) ou surcharger (ajouter) une méthode avec le même nom et un jeu de paramètres différents.
ici dans Point2, tu ajoutes bien une méthode mais dans le main tu utilises une référence Point (et non Point2), or cette classe Point ignore la version sans paramètre; l'appel est donc illégal.
Bonjour, je débute en Java et là j'ai une erreur que je ne comprends
pas du tout concernant une méthode surchargée.
Point p = new Point2(); p.deplace(); /* ERREUR ICI */
tu peux surcharger (remplacer) une méthode avec la même signature
(le même prototype) ou surcharger (ajouter) une méthode avec le
même nom et un jeu de paramètres différents.
ici dans Point2, tu ajoutes bien une méthode mais dans le main
tu utilises une référence Point (et non Point2), or cette classe
Point ignore la version sans paramètre; l'appel est donc illégal.
Bonjour, je débute en Java et là j'ai une erreur que je ne comprends pas du tout concernant une méthode surchargée.
Point p = new Point2(); p.deplace(); /* ERREUR ICI */
tu peux surcharger (remplacer) une méthode avec la même signature (le même prototype) ou surcharger (ajouter) une méthode avec le même nom et un jeu de paramètres différents.
ici dans Point2, tu ajoutes bien une méthode mais dans le main tu utilises une référence Point (et non Point2), or cette classe Point ignore la version sans paramètre; l'appel est donc illégal.
"ownowl" a écrit dans le message de news: 48bea6ac$0$2508$
bonjour c'est normal, une méthode surchargée se doit de comporter les mêmes paramètres.
Non, surcharge != redéfinition :)
Zarak
"Sylvain SF" a écrit dans le message de news: 48bea95e$0$888$
Zarak wrote on 03/09/2008 15:29:
Bonjour, je débute en Java et là j'ai une erreur que je ne comprends pas du tout concernant une méthode surchargée.
Point p = new Point2(); p.deplace(); /* ERREUR ICI */
tu peux surcharger (remplacer) une méthode avec la même signature (le même prototype) ou surcharger (ajouter) une méthode avec le même nom et un jeu de paramètres différents.
ici dans Point2, tu ajoutes bien une méthode mais dans le main tu utilises une référence Point (et non Point2),
Ah mais quel idiot, j'ai mal relu mon main...
Enfin, ça me permet d'apprendre que : "Point p = new Point2();" instancie un Point et non un Point2 :)
Merci.
"Sylvain SF" <sylvain@boiteaspam.info> a écrit dans le message de news: 48bea95e$0$888$ba4acef3@news.orange.fr...
Zarak wrote on 03/09/2008 15:29:
Bonjour, je débute en Java et là j'ai une erreur que je ne comprends
pas du tout concernant une méthode surchargée.
Point p = new Point2(); p.deplace(); /* ERREUR ICI */
tu peux surcharger (remplacer) une méthode avec la même signature
(le même prototype) ou surcharger (ajouter) une méthode avec le
même nom et un jeu de paramètres différents.
ici dans Point2, tu ajoutes bien une méthode mais dans le main
tu utilises une référence Point (et non Point2),
Ah mais quel idiot, j'ai mal relu mon main...
Enfin, ça me permet d'apprendre que : "Point p = new Point2();"
instancie un Point et non un Point2 :)
"Sylvain SF" a écrit dans le message de news: 48bea95e$0$888$
Zarak wrote on 03/09/2008 15:29:
Bonjour, je débute en Java et là j'ai une erreur que je ne comprends pas du tout concernant une méthode surchargée.
Point p = new Point2(); p.deplace(); /* ERREUR ICI */
tu peux surcharger (remplacer) une méthode avec la même signature (le même prototype) ou surcharger (ajouter) une méthode avec le même nom et un jeu de paramètres différents.
ici dans Point2, tu ajoutes bien une méthode mais dans le main tu utilises une référence Point (et non Point2),
Ah mais quel idiot, j'ai mal relu mon main...
Enfin, ça me permet d'apprendre que : "Point p = new Point2();" instancie un Point et non un Point2 :)
Merci.
Sylvain SF
Zarak wrote on 03/09/2008 17:17:
Enfin, ça me permet d'apprendre que : "Point p = new Point2();" instancie un Point et non un Point2 :)
non il instancie bien un Point2 mais le stocke (légitimement) dans un Point ce qui est valide puisque Point est une super classe de Point. et tout appel de méthode ira bien chercher les méthodes surchargées de Point2.
le problème est seulement sur le ligne "Point.deplace()", cet appel était illégal (pour la compile avant que pour la résolution virtuelle) car deplace() n'existe pas pour la classe Point.
Sylvain.
Zarak wrote on 03/09/2008 17:17:
Enfin, ça me permet d'apprendre que : "Point p = new Point2();"
instancie un Point et non un Point2 :)
non il instancie bien un Point2 mais le stocke (légitimement)
dans un Point ce qui est valide puisque Point est une super
classe de Point. et tout appel de méthode ira bien chercher
les méthodes surchargées de Point2.
le problème est seulement sur le ligne "Point.deplace()",
cet appel était illégal (pour la compile avant que pour
la résolution virtuelle) car deplace() n'existe pas pour
la classe Point.
Enfin, ça me permet d'apprendre que : "Point p = new Point2();" instancie un Point et non un Point2 :)
non il instancie bien un Point2 mais le stocke (légitimement) dans un Point ce qui est valide puisque Point est une super classe de Point. et tout appel de méthode ira bien chercher les méthodes surchargées de Point2.
le problème est seulement sur le ligne "Point.deplace()", cet appel était illégal (pour la compile avant que pour la résolution virtuelle) car deplace() n'existe pas pour la classe Point.
Sylvain.
Zarak
"Sylvain SF" a écrit dans le message de news: 48beac90$0$957$
Zarak wrote on 03/09/2008 17:17:
Enfin, ça me permet d'apprendre que : "Point p = new Point2();" instancie un Point et non un Point2 :)
non il instancie bien un Point2 mais le stocke (légitimement) dans un Point ce qui est valide puisque Point est une super classe de Point. et tout appel de méthode ira bien chercher les méthodes surchargées de Point2.
le problème est seulement sur le ligne "Point.deplace()", cet appel était illégal (pour la compile avant que pour la résolution virtuelle) car deplace() n'existe pas pour la classe Point.
Sylvain.
Ok, maintenant j'ai bien compris. Merci pour ces infos.
"Sylvain SF" <sylvain@boiteaspam.info> a écrit dans le message de news: 48beac90$0$957$ba4acef3@news.orange.fr...
Zarak wrote on 03/09/2008 17:17:
Enfin, ça me permet d'apprendre que : "Point p = new Point2();"
instancie un Point et non un Point2 :)
non il instancie bien un Point2 mais le stocke (légitimement)
dans un Point ce qui est valide puisque Point est une super
classe de Point. et tout appel de méthode ira bien chercher
les méthodes surchargées de Point2.
le problème est seulement sur le ligne "Point.deplace()",
cet appel était illégal (pour la compile avant que pour
la résolution virtuelle) car deplace() n'existe pas pour
la classe Point.
Sylvain.
Ok, maintenant j'ai bien compris. Merci pour ces infos.
"Sylvain SF" a écrit dans le message de news: 48beac90$0$957$
Zarak wrote on 03/09/2008 17:17:
Enfin, ça me permet d'apprendre que : "Point p = new Point2();" instancie un Point et non un Point2 :)
non il instancie bien un Point2 mais le stocke (légitimement) dans un Point ce qui est valide puisque Point est une super classe de Point. et tout appel de méthode ira bien chercher les méthodes surchargées de Point2.
le problème est seulement sur le ligne "Point.deplace()", cet appel était illégal (pour la compile avant que pour la résolution virtuelle) car deplace() n'existe pas pour la classe Point.
Sylvain.
Ok, maintenant j'ai bien compris. Merci pour ces infos.