Académique Documents
Professionnel Documents
Culture Documents
Les paquetages
Marta RUKOZ
les constructeurs
La dclaration d'un objet est suivie d'une sorte d'initialisation par le moyen d'une mthode particulire appele constructeur pour que les variables aient une valeur de dpart. Elle n'est systmatiquement invoque que lors de la cration d'un objet.
Le constructeur suit la dfinition des autres mthodes except que son nom doit obligatoirement correspondre celui de la classe et qu'il n'est pas typ, pas mme void, donc il ne peut pas y avoir d'instruction return dans un constructeur.
les constructeurs
La dfinition d'un constructeur est facultative. Si elle n'est pas dfinie, la machine virtuelle appelle un constructeur par dfaut vide cr automatiquement. Ds qu'un constructeur est explicitement dfini, Java considre que le programmeur prend en charge la cration des constructeurs et que le mcanisme par dfaut, qui correspond un constructeur sans paramtres, est supprim. Si on souhaite maintenir ce mcanisme, il faut dfinir explicitement un constructeur sans paramtres.
les constructeurs
Il existe plusieurs manires de dfinir un constructeur : le constructeur simple : ce type de constructeur ne ncessite pas de dfinition explicite : son existence dcoule automatiquement de la dfinition de la classe. Exemple : public MaClasse() {} le constructeur avec initialisation fixe : il permet de crer un constructeur par dfaut Exemple : public MaClasse() { nombre = 5; } le constructeur avec initialisation des variables : pour spcifier les valeurs de donnes initialiser on peut les passer en paramtres au constructeur Exemple : public MaClasse(int valeur) { nombre = valeur; }
Il existe cependant une exception : au sein d'un constructeur il est possible d'en appeler un autre de la mme classe (et portant alors sur l'objet courant). Pour cela on utilise le mot cl this. Dans ce cas, l'appel this() doit obligatoirement tre la premire instruction du constructeur
Un constructeur peut tre dclar priv (private). Dans ce cas, il ne pourra plus tre appel de l'extrieur, c'est--dire qu'il ne pourra tre utilis pour instancier des objets
Pour les types primitifs : une mthode ne peut pas modifier la valeur d'un argument effectif
Lorsqu'on manipule une variable de type objet, son nom reprsente en fait sa rfrence de sorte que la mthode reoit bien une copie, mais il s'agit d'une copie de la rfrence. La mthode peut donc modifier l'objet concern qui, quant lui n'a pas t recopi.
Bien entendu, lorsqu'une mthode d'une classe T reoit en argument un objet de classe T', diffrent de T, elle n'a pas d'accs aux champs ou mthodes prives de cet objet.
Il nous faudra donc transmettre le second point en argument , s'il le nomme b, cela nous conduira un appel de la forme :
a.coincide (b) ou b.coincide (a) La mthode coincide pourrait se prsenter comme : Public boolean coincide (Point p) { return ((p.x == x) && (p.y == y)
Exemple : Supposons qu'on a dans la classe Point une mthode nomme permute, charge d'changer les coordonnes de deux points. public void permute (Point a) { Point c = new Point (0,0) ; c.x = a.x ; c.y = a.y ; // copie de a dans c a.x = x ; a.y = y ; // copie du point courant dans a
x = c.x ; y = c.y ;
}
Cette mthode reoit en argument la rfrence a d'un point dont elle doit changer les coordonnes avec celles du point concern par la mthode. Ici on a cre un objet local c de classe Point, qui sert effectuer l'change.
Considrons l'appel a.permute (b) ; A la fin de l'excution de la mthode (avant son retour ), on a : a b
5 6 1 2 1 2
c Notez que ce ne sont pas les rfrences contenues dans a et b qui ont chang, mais seulement les valeurs des objets correspondants
Un autre exemple :
Point p = new Point (2, 5) ; . for ( )
{ Point s = p.symetrique () ;
. }
Si la rfrence contenue dans s n'est pas recopie dans une autre variable au sein de la boucle for, l'objet rfrenc par s (cr par la mthode symetrique) deviendra candidat au ramasse-miettes la fin de la boucle for
class E
{ { . } . }
}
classe I { . } } Ici un objet de classe E ne contient aucun membre de type I. Simplement, une de ses mthodes (fe) utilise le type I pour instancier un objet de ce type
}
Ici un objet de classe E contient deux membres de type I.
Un objet de classe externe a toujours accs aux champs et mthodes (mme privs) d'un objet d'une classe interne auquel il a donn naissance.
Les paquetages
La notion du paquetage correspond un regroupement logique sous un identificateur commun d'un ensemble de classes.
Lorsque, dans un programme, on fait rfrence une classe, le compilateur la recherche dans le paquetage par dfaut.
Droits d'accs aux classes : Avec le mot cl public, une classe est accessible toutes les autres classes. Sans le mot cl public, la classe n'est accessible qu'aux classes du mme paquetage
Sans aucun mot cl, la classe interne n'est accessible que depuis les classes du
mme paquetage