Notes de cours Java

Programming, Java, Object-Oriented Concepts · course

Voir tous les documents en programmation

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