Quelques notions sur les objets

Surcharge de méthode

Si vous regardez la documentation d'une classe java, par exemple celle de la classe Integer, vous remarquerez qu'elle possède plusieurs constructeurs, qui différent par leurs paramètres. C'est un exemple de la surcharge autorisée par Java : une méthode peut exister en plusieurs versions portant le même nom et différant par les paramètres qu'elles attendent. C'est ce qu'on appelle la surchage de méthode. Les différentes versions de la même méthode doivent pouvoir être distinguées sans ambiguïté par leurs paramètres.

Par exemple on peut enrichir la classe Boite de deux autres constructeurs :

//fichier Boite.java
class Boite{
int profondeur,largeur,hauteur;
boolean pleine;
 Boite(){
    profondeur=10;
    hauteur=10;
    largeur=10;
    pleine=true;  //constructeur d'une boite par defaut : cube d'arete 10 pleine
   }
  
  Boite(int p,int l,int h){
   profondeur=Math.abs(p);
   largeur=Math.abs(l);
   hauteur=Math.abs(h);
   pleine=true;  // constructeur d'une boite sur mesure pleine
   }  
  
 Boite(int p,int l,int h,boolean etat){
   profondeur=p;
   largeur=l;
   hauteur=h;
   pleine=etat;  // constructeur d'une boite sur mesure avec un état choisi
   }  
 Boite(Boite modele){
   profondeur=modele.profondeur;// la profondeur (de l'objet créé) sera égale à celle de son modèle
   largeur=modele.largeur; //de même pour les autres champs
   hauteur=modele.hauteur;
   pleine=modele.pleine;  // constructeur d'une boite par copie d'une autre boite
   }  
}
Utilisation de ces différents constructeurs dans un programme:
//fichier CreeDboites.java
class CreeDboites{
public static void main(String[] args){
   
   Boite boite=new Boite(200,100,50); // construit une boite pleine de dimensions 200 x 100 x 50 appelée boite
   System.out.println("profondeur: "+boite.profondeur); // affichage
   System.out.println("largeur: "+ boite.largeur); // des valeurs
   System.out.println("hauteur: "+boite.hauteur); //des champs
   System.out.println("pleine: "+ boite.pleine); // de boite
   
   Boite boite1=new Boite(200,100,50,false); // construit une boite vide de dimensions 200 x 100 x 50 appelée boite1
   System.out.println("profondeur: "+boite1.profondeur); // affichage
   System.out.println("largeur: "+ boite1.largeur); // des valeurs
   System.out.println("hauteur: "+boite1.hauteur); //des champs
   System.out.println("pleine: "+ boite1.pleine); // de boite1
   
   Boite boite2=new Boite();  // construit une nouvelle boite ayant les caractéristiques par défaut
   System.out.println("profondeur: "+boite2.profondeur); // affichage
   System.out.println("largeur: "+ boite2.largeur); // des valeurs
   System.out.println("hauteur: "+boite2.hauteur); //des champs
   System.out.println("pleine: "+ boite2.pleine); // de boite2
   
   Boite boite3=new Boite(boite1); // construit une nouvelle boite par copie de boite1
   System.out.println("profondeur: "+boite3.profondeur); // affichage
   System.out.println("largeur: "+ boite3.largeur); // des valeurs
   System.out.println("hauteur: "+boite3.hauteur); //des champs
   System.out.println("pleine: "+ boite3.pleine); // de boite3
   }
}
Ecrire un nouveau constructeur pour la classe Ami, prenant comme paramètre seulement le prénom. Penser à initialiser les autres champs (à 0, ou vide...)
 
Licence Creative Commons
licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé
Auteur : Nathalie Bonnin
Professeur de Physique, Chimie, Informatique au lycée La Martinière Monplaisir (Lyon 8ème)
Contact :
nathalie.bonnin (chez) scientillula.net
Licence Creative Commons
La totalité du contenu du site Scientillula.net appartient à Nathalie Bonnin et est mise à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 non transposé