Académique Documents
Professionnel Documents
Culture Documents
L’HERITAGE
Objectifs
o Construire une super-classe.
o Construire une classe dérivée.
o Utiliser le polymorphisme et le
surcharge.
L’HERITAGE
• L'héritage de classes permet de définir une
hiérarchie de classe qui se compose de super
classes et de sous-classes. Une classe qui hérite
d'une autre est une sous-classe et celle dont elle
hérite est une super classe.
class Capitale extends Ville {
…
}
• C'est le mot clé extends qui informe Java que la
classe Capitale est héritée de Ville
HÉRITAGE
• Remplacer private par protected dans la
déclaration de variables ou de méthodes
de la classe Ville aura pour effet de les
protéger des utilisateurs de la classe tout en
permettant aux objets enfants d'y accéder.
Classe de base
Personne
Nom
Prénom
Age
Adresse
• Une personne contient un nom ,
prenom, age et adresse
afficher()
• La classe Employé
Un employé est une personne qui
extends
travaille dans une société.
Employe
les données de l’ Employé
correspond donc à celles de la
Société
classe Personne.
salaire
Un employé a en plus la société a
laquelle il est rattaché ainsi qu’un
afficher()
salaire.
Classe dérivee
public class Personne{
protected String nom;
protected String prenom;
protected int age;
protected String ville;
Personne(){};
public Personne(String nom, String prenom, int age, String ville){
this.nom= nom; this.prenom= prenom; this.age= age;
this.ville= ville;}
public String afficher(){
return"ʺ le nom est : "ʺ+nom+"ʺ "ʺ+ prenom+ "ʺ L’age : "ʺ+ age+ "ʺans "ʺ+
"ʺ habite à "ʺ+ville); } }
public class Employe extends Personne{
private String societe;
private double salaire;
…..}
Pour initialiser le nom, le prenom, l’age et la ville
d’un employé
public Employe(String n, String p, int a, String v, String s, double sa){
super(n,p,a,v)
this.societe=s;
public Personne(String n, String p, int a, String v)
this.salaire=sa;
{this.nom= n;
}
this.prenom= p;
this.age= a;
this.ville= v;}
Point () {
this(-1, -1); }
}
HÉRITAGE
class Point3D extends Point
{ int z;
Point3D() {
this(-1, -1, -1); }
}
Soit la classe Etudiant qui hérite de classe Personne et qui a comme
attributs.
numeroInscription int, nbreAbsences int
• Définir la classe Etudiant.
• Ajouter un constructeur qui initialise tous les attributs de classe
Etudiant.
• Ajouter une méthode afficher() qui retourne l’état d’un étudiant.
• Ajouter une méthode absence() qui incrémente le nombre des
absences d’un étudiant.
Soit la classe Professeur qui hérite de classe Personne et qui a comme
attributs :
matricule: int, nbHeureSup: int, tauxHoraire : double, salaireFixe:double
• Définir la classe Professeur.
• Ajouter un constructeur qui initialise tous les attributs de la classe
Professeur.
• ajouter une méthode afficher() qui retourne l’état d’un professeur.
• Ajouter une méthode calculerSalaire() qui retourne le salaire d’un
professeur.
Synthèse
• Une classe hérite d'une autre classe par le biais du mot clé
extends.
• Une classe ne peut hériter que d'une seule et unique classe !
• La classe fille hérite de toutes les propriétés et méthodes public
et protected de la classe mère.
• On peut redéfinir une méthode héritée, c'est-à-dire qu'on peut
changer tout son code.
• On peut utiliser le comportement d'une classe mère par le biais
du mot clé super.
• Si une méthode d'une classe mère n'est pas redéfinie ou
« polymorphée », à l'appel de cette méthode par le biais d'un
objet enfant, c'est la méthode de la classe mère qui sera utilisée.
• Vous ne pouvez pas hériter d'une classe déclarée final.
• Une méthode déclarée final est non redéfinissable.
Les classes abstraites
Ouvrier
Patron
Cadre
dateEntree
Ca
SMIG
Indice ;
pourcentage
getSalaire()
getSalaire()
getSalaire()
getInfo()
getInfo()
getInfo()
Créer la classe Ouvrier, la classe Cadre et la classe Patron qui
héritent de la classe Personne. et prévoir les constructeurs (à 3
et à 0 arguments) de chacune des 3 classes,
Le patron a un salaire qui est égal à x% du chiffre d'affaire :
salaire = cA*pourcentage/100
Le cadre a un salaire qui dépend de son indice :
E1 : salaire annuel brut 120.000,00 Dh,
E2 : salaire annuel brut 130.000,00 Dh,
E3 : salaire annuel brut 140.000,00 Dh,
E4 : salaire annuel brut 150.000,00 Dh,
L’ouvrier a un salaire égale = SMIG + (age-18)*100 +
( dateCourante - dateEntree)*150. De plus, le salaire ne doit
pas dépasser SMIG*2.
Ecrire la méthode float getSalaire() qui permet de calculer le
salaire pour chacune des classes.
Ecrire la méthode String getInfo() qui renvoie le nom,
le prénom, la société , le salaire et le poste occupé
(On pourra utiliser la méthode getInfo() de classe
mère et rajouter l'information du poste occupé).
Le programme principal devra créer 1 patron et 2
cadres aux indice E1 et E3 et 5 ouvriers. Tester les
différentes fonctions.
Afficher les informations concernant les différents
employés.
Les différences entre les interfaces
et les classes abstraites :
•
super classe, alors qu’une
une classe abstraite n’a qu’une
classe interface peut dériver de plusieurs autres interfaces.
• Des classes non liées hiérarchiquement peuvent implémenter
la même interface
• Une classe peut implémenter plusieurs interfaces (permettant
un héritage multiple, en les séparant par des virgules après le
mot implements).
• Toutes les méthodes d'une interface sont implicitement
abstraites.
• Une interface n'a pas de constructeurs
• Une interface ne peut avoir de champs sauf si ceux-ci sont
statiques.
Définition de l'ʹinterface
package cours;