La classe Object
Hi�rarchie de classes
Une sous-classe qui est d�riv�e d'une superclasse peut elle m�me avoir une sous-classe. De cette mani�re, on construit ce que l'on appelle une hi�rarchie de classes. Un exemple typique d'hi�archie de classes se base sur le monde animal et est illustr� sur la figure suivante.

Il n'y a pas de limite quant au nombre d'enfants que peut avoir une classe ou quant au nombre de niveaux qu'une hi�rarchie de classe peut avoir. Une classe peut donc avoir une classe parent, une classe grand-parent, ... En g�n�ral, on parlera des anc�tres d'une classe. Une classe h�rite donc des �l�ments de tous ses anc�tres.
Il existe encore une autre relation particuli�re entres deux classes, enfants d'un m�me parent. En anglais, il existe un mot pour qualifier cette relation, on dit que les deux classes sont siblings. Il n'existe pas de mot en fran�ais, on dit simplement que les deux classes ont le m�me parent. Ce genre de classes ont la particularit� d'h�riter des m�mes �l�ments, tandis que chacune d'entre elles va se sp�cialiser.
G�n�ral et sp�cifique
Pour rappel, une superclasse est toujours plus g�n�rale qu'une sous-classe, ainsi, dans une hi�rarchie de classes, les caract�ristiques communes � tout le monde se trouveront dans les classes les plus hautes tandis que les caract�ristiques sp�cifiques se retrouveront dans les classes du bas de la hi�rarchie.
Enfin, il faut savoir que la relation d'h�ritage est transitive, c'est-�-dire que tout ce qu'une classe a h�rit� de sa superclasse, elle va le l�guer � propres ses sous-classes. Ainsi, un membre h�rit� peut se trouver dans la superclasse, ou plus haut dans la hi�rarchie, dans un des anc�tres.
Hi�archie d'interfaces
Le concept d'h�ritage s'applique �galement aux interfaces, ainsi, une interface peut en �tendre une autre. Une classe qui impl�mente une telle interface devra donc impl�menter toutes les m�thodes de l'interface ainsi que de la superinterface, etc ...
On peut donc construire des hi�rarchies d'interfaces. Il est n�anmoins interdit de m�langer classes et interfaces, une classe n'�tend pas une interface et une interface n'�tend pas une classe.

La figure pr�c�dent illustre un sch�ma que l'on retrouve assez souvent. On a tout d'abord une interface Interface1
qui est impl�ment�e par la classe Classe1
. Classe1
impl�mente donc toutes les m�thodes qui sont dans l'interface Interface1
.
Ensuite, on d�cide d'�tendre l'interface Interface1
, de lui ajouter des m�thodes, mais pour le faire de mani�re « propre », c'est-�-dire en respectant la programmation orient�e objet, on cr�e une nouvelle interface Interface2
qui �tend Interface1
. On ajoute les m�thodes suppl�mentaires dans Interface2
.
Si on veut �crire une classe qui impl�mente Interface2
, elle devra contenir une impl�mentation pour toutes les m�thodes de Interface1
et Interface2
, la solution offerte par la programmation orient�e objet est de repartir de Classe1
qui contient d�j� une impl�mentation pour toutes les m�thodes de Interface1
, on cr�e une nouvelle classe Classe2
qui �tend Classe1
et on y ajoute une impl�mentation des m�thodes de Interface2
.
La classe Object
En Java, toute classe qui n'�tend pas une autre en utilisant le mot r�serv� extends
�tend implicitement la classe Object
(qui se trouve dans le package java.lang
). Ainsi, toutes les classes Java ont comme premier anc�tre la classe Object
.
Les m�thodes de la classe Object
�tant donn� que toutes les classes �tendent la classe Object
(directement ou indirectement), tout objet � acc�s aux m�thodes publiques d�finies dans la classe Object
. Certaines des m�thodes de cette classe sont tr�s int�ressantes et m�ritent notre attention.
On a d�j� rencontr� quelques-unes de ces m�thodes tout au long de ce tutoriel Java, on conseillait par exemple d'ajouter � toutes les classes une m�thode toString
, une m�thode equals
, ... Jusqu'� pr�sent, on ne savait pas trop pourquoi ces m�thodes devaient poss�der une telle signature, et bien maintenant, on comprends qu'il s'agit simplement d'une surcharge des m�thodes se trouvant dans la classe Object
.
public String toString();
Cette m�thode permet d'obtenir une repr�sentation de l'objet sous forme d'une chaine de caract�re.
public boolean equals (Object o);
Cette m�thode permet de comparer un objet � l'objet courant pour savoir s'ils sont �gaux ou non.
protected Object clone();
Cette m�thode permet d'obtenir une copie de l'objet et non pas une copie de la r�f�rence vers l'objet.
La classe Object
rassemble donc des m�thodes que tout objet aura �tant donn� que toutes les classes h�ritent directement ou indirectement de la classe Object
. Cette classe se trouvant tout en haut de la hi�rarchie de classes poss�de donc des m�thodes tr�s g�n�rales comme nous venons de les voir.
Sp�cialisation des m�thodes de la classe Object
Il est n�anmoins possible de sp�cialiser le comportement de ces m�thodes pour une classe particuli�re en utilisant le m�canisme de surcharge de m�thode rencontr� � la section pr�c�dente. Nous allons voir un exemple.
Voici une classe qui repr�sente un livre. Dans notre exemple, un livre ne poss�de qu'un titre ainsi qu'une liste d'auteurs. On va donc utiliser deux variables d'instances : la premi�re est un tableau de String
pour les auteurs et la seconde un String
pour le titre.