Grâce à l'héritage, une classe peut disposer de toutes les fonctionnalités (attributs et méthodes) d'une classe existante, à laquelle on ajoute une nouvelle fonctionnalité, c'est-à-dire, de nouveaux attributs et de nouvelles méthodes permettant de spécialiser la sous-classe.
Une superclasse constitue un rassemblement (ou une factorisation) des fonctionnalités communes à plusieurs classes, ce qui permettra de les réutiliser, dans ces classes, en utilisant le principe d'héritage.
La syntaxe générale d'une déclaration d'une classe en Java est la suivante :
[modificateur] class NomDeSousClasse [extends NomDeSuperClasse] [implements interface1, inetrface2, ...]
{Le mot clé extends (facultatif) signifie que l'on crée une nouvelle classe qui dérive par héritage d'une classe existante.
// Attributs et méthodes de la classe.}
...
En Java, lorsqu'une déclaration d'une classe n'indique pas explicitement une superclasse à l'aide du mot clé extends, cette classe sera considérée comme une sous-classe de la classe Object.
L'écriture: public class NomDeClasse
est équivalet à :
public classe NomDeclasse extends Object.
En Java, chaque classe ne peut posséder qu'une seule superclasse: héritage simple, mais une superclasse peut posséder plusieurs sous-classes.
Les classes Java sont organisées en une hiérarchie arborescente dont le sommet est la classe Object. Toute classe sauf Object possède une et une seule superclasse dont elle hérite.La classe Object est la superclasse de toutes les classes Java: Toutes les classes héritent de la classe Object.
A partir d'une sous-classe, il est possible d'accéder et d'utiliser tous les membres (attributs et méthodes) non privées de sa superclasse. Toutefois, les membres définis sans modificateur ne sont accessibles que par les classes et les sous-classes définies dans le package de la superclasse.
Par contre, la sous-classe n'a pas accès :
- Aux membres de la superclasse définis sans modificateur si le package de la sous-classe est différent de celui de la superclasse. Ces membres ne sont pas hérités par les sous-classes définies dans des packages différents de celui de la superclasse.
- Aux membres privés de sa superclasse, ces membres ne sont pas hérités par les sous-classes.
Cependant, si la superclasse possède des méthodes public ou protected qui accident à ces membres non hérités, ces méthodes peuvent être utilisées par une sous-classe pour accéder indirectement à ces membres non hérités qui sont en fait contenus dans les objets de cette sous-classe.
Si une superclasse est modifiée, cette modification se répercutera sur toutes ses sous-classes et sur toutes les sous-classes de ces sous-classes.
Si une classe est déclarée finale, elle ne peut pas être héritée(ou sous-classée) par une autre classe.
Aucun commentaire:
Enregistrer un commentaire