[Java] Appeler un constructeur dans le corps d'une méthode [Résolu/Fermé]

Signaler
Messages postés
25
Date d'inscription
mardi 27 novembre 2012
Statut
Membre
Dernière intervention
24 janvier 2013
-
Messages postés
25
Date d'inscription
mardi 27 novembre 2012
Statut
Membre
Dernière intervention
24 janvier 2013
-
Bonjour,


Pourrait-on me donner un exemple illustrant ce paragraphe

Ajouter un comportement à une méthode de la superclasse
La redéfinition d'une méthode consiste à réécrire totalement la méthode initiale. Il est parfois utile de simplement ajouter un comportement au comportement original, pour cela l'utilisation du mot-clé super s'avère nécessaire. En appelant le constructeur de la superclasse dans le corps de la méthode qui la redéfinit, et en ajoutant de nouvelles instructions, la méthode originale est dotée de comportements supplémentaires.


J'ai trouvé ça ici :
https://www.commentcamarche.net/contents/556-java-l-heritage


Merci ;)

1 réponse

Messages postés
15985
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 août 2020
2 650
Exemple bidon avec l'utilisation de super dans un constructeur et dans une méthode :

public class PointXY
{
    protected double x,y;
    
    public PointXY(double x, double y)
    {
    	this.x=x;
    	this.y=y;
    }
    
    public void afficher()
    {
        System.out.println("x = "+x);
        System.out.println("y = "+y);
    }
}

public class PointXYZ extends PointXY
{
    protected double z;

    public PointXYZ(double x, double y,double z)
    {
    	super(x,y);
    	this.z=z;
    }
    
    public void afficher()
    {
        super.afficher();
        System.out.println("z = "+z);
    }
}

public class Test
{
    public static void main(String[] args)
    {
        PointXY xy = new PointXY(1,2);
        xy.afficher();
		
        PointXYZ xyz = new PointXYZ(3,4,5);		
        xyz.afficher();
    }
}
Messages postés
25
Date d'inscription
mardi 27 novembre 2012
Statut
Membre
Dernière intervention
24 janvier 2013

Merci... Je ne savais pas qu'on pouvais faire ça.. Donc, du coup, la méthode afficher de PointXYZ est en fait celle de PointXY, mais à laquelle on ajoute la ligne affichant z..
OK :)
Messages postés
15985
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
10 août 2020
2 650
Il faut également noter le super dans le constructeur qui permet d'initialiser le PointXYZ comme étant un PointXY avant d'initialiser z (qui est la spécificité héritée).

Evidemment ici c'est un exemple très simple, presque inutile, mais qui permet de voir ce que permet de faire l'héritage. Ici on ne s'est intéressé qu'à "compléter" une méthode, mais dans la majorité des cas, un certain nombre de méthodes sont totalement inchangées d"une classe mère vers sa classe fille, dans ce cas là il n'y a même pas besoin d'y retoucher, et les méthodes se propagent (c'est le cas par exemple de toutes les méthodes de Object)
Messages postés
25
Date d'inscription
mardi 27 novembre 2012
Statut
Membre
Dernière intervention
24 janvier 2013

ok. Merci ;)