Héritage en java programmation objet

Pourquoi hériter ?

• Pour relier des classes entre elles
♦ lorsqu’une classe étend les fonctionnalités d’une autre classe
♦ lorsqu’une classe adapte le fonctionnement d’une autre classe à une situation particulière
• Pour exploiter des classes existantes
♦ sans en modifier le code
♦ même si ce code est inaccessible
♦ la documentation de la classe héritée suffit
• Pour organiser le développement
♦ regrouper les champs communs à plusieurs classes
♦ regrouper les méthodes communes
• Pour des applications plus évolutives
♦ moins de programmation, plus de conception

Relation d’extension

• Relation entre deux classes
♦ La classe B étend la classe A
tout objet de la classe B est un objet de la classe A
l’ensemble B est inclus dans l’ensemble A
♦ Relation non symétrique
• Motivations de cette extension
♦ Spécialisation
exprime qu’une classe est un cas particulier d’une autre classe
une préfecture est une ville particulière
♦ Enrichissement
ajoute des propriétés et/ou des fonctionnalités à une classe
une préfecture est une ville qui, de plus, abrite un préfet

Comment déclarer une extension ?

class Fille extends Mere{
…ClasseDuChamp champEnPlus ;
… methodeRedefinie (…) {
}
… methodeEnPlus(…) {
}
}
Les objets de la classe Fille…
♦ héritent des champs et méthodes de la classe Mere
♦ disposent de champs supplémentaires
♦ redéfinissent certaines méthodes non statiques de Mere
♦ disposent de méthodes supplémentaires

LIRE AUSSI :  La programmation réseau (Java et les réseaux)

Concevoir des extensions

• Repérer les relations «EstUn(e) » entre classes une préfecture est une ville particulière
• Etendre dans les 2 directions
♦ par des sous-classes pour chaque cas particulier connu
♦ par des super-classes pour une généralisation potentielle une ville est une commune particulière
• Dessiner le graphe d’héritage
♦ synonyme : hiérarchie de classes
♦ représente la relation d’extension par un ensemble d’arbres de classes (arborescence)

Champs hérités

• Fonctionnement
♦ Comme si un objet possédait tous les champs de toutes ses classes ascendantes, en plus de ses propres champs
♦ Tous les noms de champs d’une lignée doivent être différents
• Syntaxe
♦ la même que pour les champs propres
unObjet.champPropre;
unObjet.champAscendant;
♦ Pour thisdans une méthode, même syntaxe
this.champPropre;
this.champAscendant;

Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Java programmation objet (511 KO)  (Cours PDF)
Cours Héritage en Java

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *