amasou
Messages postés36Date d'inscriptionmardi 12 mai 2009StatutMembreDernière intervention 1 septembre 2010
-
16 nov. 2009 à 15:54
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 2011
-
16 nov. 2009 à 16:37
bonjours
je veux savoir pourquoi lorsque en ecrire animal b=new chien(); il affiche le contenu de methode az de chien
et losque en mettre animal b=new chien(23); b.az(23) avec un argument il affiche le contenu de methode az de animal
merci
public class animal {public int az ( ){return 2;}
public class chien extends animal {public int aze (){return 3;}
class test{
public static void main(String[] args) {
animal a=new animal();
animal b=new chien();
System.out.println(a.az());
System.out.println(b.az());
}
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 16 nov. 2009 à 16:37
Salut,
c'est une redéfinition et non une surcharge (qui correspond à la même méthode mais avec des paramètres différents).
Tu as le type déclaré (animal) et le type réel (chien). En java, on exécute toujours la méthode redéfinie correspondant au type réel.
Donc quand tu fais a.az(), c'est la méthode du type réel, ici animal, qui est appelée. Quand tu fais b.az(), c'est la méthode du type réel, ici chien, qui est appelée.