L'héritage en Java : classe et interface
L'héritage en java est une propriété simple et puissante dans le concept orienté objet, il permet de réécrire les attributs et les méthodes de la classe mère dans la classe fille, et de cette façon qu'une autre sous classe peut hériter elle aussi de la classe fille. Java utilise cette propriété dans toutes les classes.Le mot clé utilisé pour l'héritage dans java est extends. L'héritage multiple est interdit par contre il est autorisé pour les interfaces.
La classe Object
Lors de la programmation on remarque que des méthodes se répètent partout comme: toObject(), equals(), wait()...etc. C'est parce que en java toutes les classes héritent de la super classe Object qui est la racine de toute l'hiérarchie.![]() |
Toutes les classes héritent de Object |
Exemple
Dans cet exemple, on a déclaré une classe personne avec les attributs nom et adresse. Les deux sous classes héritent de Personne: la première classe directeur et la deuxième classe Employé qui a comme attribut en plus salaire.
class Personneremarque:
{
public String nom;
public String adresse;
}
class Employe extends Personne
{
int salaire;
public Employe(String nom, String adresse, int salaire)
{
this.nom=nom;
this.adresse=adresse;
this.salaire=salaire;
}
}
class Directeur extends Personne
{
public Directeur()
{
this.nom= "nom";
this.adresse= "adresse";
}
}
La classe fille hérite les membres déclarés protected et public et hérite aussi les membres private si elle se trouve dans le même package de la classe mère.
Le mot clé super en java
On peut développer la classe Personne pour que d'autres classes héritent d'elle en sous classes, si on considère que dans cette entreprise, il existe plusieurs fonctions: ingénieur, comptable, secrétaire...etc.class Ingenieur extends Employe
{
public Ingenieur()
{
super("nom","adresse",110);
}
public void concevoir(){System.out.println("Je suis ingénieur");}
public void developper(){};
}
class Comptable extends Employe
{
public Comptable()
{
this.nom= "nom";
this.adresse= "adresse";
this.salaire = 3000;
}
public void gererLesComptes(){};
public void gererLesBilans(){};
}
Le mot clé super est aussi utilisé pour appeler les méthodes de la classe supérieure. Voici un exemple:
class Ingenieur_reseaux extends EmployeSans super la méthode concevoir() déclarée dans le constructeur Ingénieur_réseaux va être appelée à la place de la méthode concevoir() déclarée dans ingénieur, donc pour faire référence à la méthode mère il faut ajouter le mot clé super.
{
public Ingenieur_reseaux ()
{
super("nom","adresse",3100);
}
public void concevoir(){
super.concevoir();
System.out.println("J'ai conçu l'architecture réseau de l'entreprise");
}
}
Exécution:
Je suis ingénieur
J'ai conçu l'architecture réseau de l'entreprise
Héritage d'interfaces en java
L'héritage multiple est autorisé pour les interfaces.interface imprimer{
void imprimer();
}
interface afficher{
void afficher();
}
interface interfaceIA extends imprimer,afficher{
void imprimer_afficher();
}
class testIA implements interfaceIA{
void imprimer(){System.out.println("Impression en cours")};
void afficher(){System.out.println("Impression terminée")};
public static void main(){
testIA test = new testIA();
test.imprimer();
test.afficher();
}
}