Notes de cours Java
Modifieurs d’accès au niveau des membres des classes
- Les méthodes et les attributs de classe sont nommés membres.
- Les membres peuvent avoir les 4 niveaux d’accès (public, protected, private et
par defaut).
- L’accès aux membres détermine si :
o un code dans une classe peut accéder à un membre d’une autre classe.
o Si une classe fille peut hériter un membre de sa classe mère.
- Si une classe n’est pas accessible (pas visible), ses membres le sont aussi indépendamment
de leurs niveaux de visibilité.
- Déterminer la visibilité de la classe avant celle de ses membres.
- Si un membre d’une classe mère (directe ou non) est public, la sous-classe l’hérite
indépendamment des paquetages.
- À l’intérieur d’une classe, les membres peuvent être manipulés sans l’opérateur « . ».
- this fait référence à l’objet en cours d’exécution (courant).
- this.uneMethode() est équivalent à l’appel directe uneMethode().
- Les membres privés ne peuvent être manipulés qu’à l’intérieur de la classe où ils sont
déclarés.
- Les membres privés ne sont pas visibles pour les classes filles et ne peuvent donc pas être
hérités.
- Les membres protected ou ayant un accès par défaut ne diffèrent que lorsqu’une classe fille
est impliquée.
Variables locales
- Les variables locales ne peuvent pas avoir de modifieurs d’accès.
- Seul le modifieur final peut être appliqué aux variables locales.
- Les variables locales n’ont pas de valeurs par défaut.
Le modifieurs final
- Les classes peuvent être qualifiées par le mot clé final.
- Une classe « final » ne peut pas être dérivée.
- Les méthodes déclarées final ne peuvent pas être redéfinies dans les classes filles.
- Les attributs peuvent avoir tous les niveaux d’accès
- Les attributs peuvent être déclarés final.
- Les « variables » ayant le modifieur final :
o ne peuvent pas changer de valeur après leur initialisation (lors de la déclaration)
Publicité
o
les références final ne peuvent plus référencer d’autres objets une fois qu’on leur a
affecté un objet.
o Les attributs final doivent être initialisés avant la fin du constructeur de la classe.
- Un objet référencé par une référence final peut changer d’état (valeurs de ses attributs).
C’est la référence qui doit toujours référencer le même objet.
Mohamed Ramzi HADDAD
3
2AINFO, 1ATEL, 2ATA
Notes de cours Java
Variables et méthodes statiques (modifieur static)
- Les variables et les méthodes statiques ne sont pas liées à une instance particulière de la
classe. Ce sont des membres de la classe et non pas des membres d’instances.
-
- Pour accéder aux membres statiques, la syntaxe est NOMClasse.variableStatique pour les
variables statiques ou NomClasse.méthodeStatique(……) pour les méthodes statiques.
Il est possible d’accéder aux membres statiques en utilisant une référence sur une instance.
Cependant, le compilateur va remplacer le nom de la référence par celui de la classe pour
retrouver la syntaxe précédente.
Il n’est pas nécessaire de disposer d’un objet de la classe pour accéder aux variables et aux
méthodes statiques de celle-ci. En effet, ces éléments existent même s’il n’existe aucune
instance de la classe.
Publicité
Il n’existe qu’une seule copie des variables et des méthodes statiques de la classe
indépendamment du nombre d’instances de celle-ci.
-
-
- Les instances de la classe partagent les membres statiques de celle-ci.
- Les méthodes statiques ne peuvent pas accéder directement aux membres non statiques.
- Utiliser les méthodes statiques pour implémenter tout comportement qui ne dépend
d’aucune instance de la classe.
- Utiliser les variables statiques pour stocker les données qui décrivent la classe et non pas une
de ses instances. Comme ça il n’y aura qu’une seule copie de ces données partagée entre
tous les objets de la classe.
Constructeurs et initialisation
- Un constructeur :
o Doit avoir le même nom que sa classe.
o N’a pas de type de retour. S’il y a un type de retour, c’est alors une méthode qui a le
même nom que la classe et n’est donc pas considérée comme un constructeur.
o Peut avoir n’importe quel modifieur d’accès (même private).
- Lors de l’instanciation d’un objet à partir d’une classe, chaque super-classe de sa hiérarchie
d’héritage (classes mères) aura au moins un constructeur appelé.
- L’exécution d’un constructeur est la suivante :
o Le constructeur appelle un constructeur de sa classe mère ou une de ses surcharges
dans la même classe.
o Les appels des constructeurs s’enchainent jusqu’à atteindre celui de la classe Object.
o Le constructeur de la classe Object s’exécute et retourne la main au constructeur
Publicité
appelant qui à son tour s’exécute et retourne la main à celui qui l’a appelé. Ce
processus continue jusqu’à arriver au constructeur de la classe à instancier.
- Un constructeur ne peut être directement appelé qu’à partir d’un autre constructeur en
utilisant soit super() soit this() avec ou sans paramètres.
- La première instruction d’un constructeur est soit un appel (paramétré ou pas) à super() pour
appeler un constructeur de la classe mère ou à this() pour appeler un constructeur de la
même classe.
Mohamed Ramzi HADDAD
4
2AINFO, 1ATEL, 2ATA
Notes de cours Java
- Le compilateur crée un constructeur par défaut si la classe n’a pas de constructeurs
implémentés.
- Le constructeur par défaut est un constructeur non paramétré dans lequel il y a un appel
super() sans paramètres.
- Le compilateur insère un appel non paramétré à super() à la première ligne de chaque
constructeur s’il n’existe pas d’appel (paramétré ou non) à super() ou à this().
- Les membres de la classe ne sont accessibles qu’à la fin de l’exécution du constructeur de sa
classe mère.
- Si la classe mère n’a pas de constructeurs non paramétrés, les constructeurs de la classe fille
doivent avoir un appel explicite à super() avec les paramètres adéquats.
- Les constructeurs ne sont jamais hérités et ne peuvent donc pas être redéfinis.
Publicité
-
- Les appels à this() et super() sont mutuellement exclusifs. C’est-à-dire qu’ils ne peuvent pas
this() ne peut exister qu’à la première ligne d’un constructeur.
coexister dans le même constructeur.
Paramètres et types de retour
- Les méthodes avec un type de retour non primitif (classe) peuvent retourner la valeur null ou
un sous type du type de retour (passant le test est-un).
- Un tableau est un type de paramètres et de retour légal.
- Pour les méthodes à type de retour primitif, toute valeur pouvant être implicitement
-
-
convertie vers ce type de retour est acceptée.
Il n’est pas possible de retourner une valeur dans une méthode ayant le type de retour void.
Par contre, il est possible d’arrêter l’exécution de cette méthode par le mot clé return sans
valeur.
Il est interdit de ne pas retourner de valeur pour une méthode ayant un type de retour
différent de void.
Mohamed Ramzi HADDAD
5
2AINFO, 1ATEL, 2ATA