Cet article, rédigé sous la forme de questions / réponses, est destiné aux étudiants en fin d’études, aux développeurs juniors et également aux passionnés envisageant de passer prochainement des entretiens techniques en Java.
Les questions traitées sont celles qui sont le plus souvent posées en entretien. Cela vous aidera donc à éviter de rater votre prochain entretien technique. Aussi, les explications apportées vous permettront d’approfondir vos connaissances Java déjà acquises et de pouvoir les réexpliquer.
I. Le concept de la Programmation Orientée Objet
Contrairement à la programmation procédurale qui repose sur des séries d’instructions et de logique, la programmation orientée objet est un style de programmation qui s’articule autour d’objets renfermant des données et des mécanismes.
Avantages :
Traduit un univers complexe en de petits ensembles simples et autonomes (Objets),
Permet de sécuriser nos données en définissant des règles d’accès et de modification,
Permet de travailler à plusieurs sur un même projet composé de plusieurs briques.
II. Classe et Objet
1. Qu’est-ce q’une classe en java ?
Une "classe" est un ensemble d’attributs et de méthodes (fonctions). En outre, elle représente l’ensemble des caractéristiques et des mécanismes d’un concept du monde réel.
A. à quoi sert le constructeur ?
Un constructeur est une méthode qui permet de créer une nouvelle instance d’une classe. Il porte toujours le nom de la classe dans laquelle il est défini et sert à initialiser des attributs soit avec des valeurs passées en paramètre ou avec des valeurs par défaut.
Sa définition n’est pas obligatoire et nous pouvons en définir, dans une même classe, autant que l’on souhaite avec des signatures différentes.
B. Qu’est-ce qui différencie un constructeur d’une méthode ?
Une méthode (ou fonction) en POO est une fonctionnalité rattachée à un concept d’entité du monde réel ou simplement une routine définie dans une classe utilitaire.
Littéralement, un constructeur est une méthode mais il faut préciser qu'un constructeur :
- Prend obligatoirement le nom de la classe dans laquelle elle est définie,
- N’a pas « de type de retour » et ne retourne « aucune valeur »,
- Existe toujours dans une classe, celui par défaut en cas d’absence de constructeur,
- Ne peut pas être appelé directement. Ils sont appelés implicitement à l’instanciation d’un objet avec le mot clé new.
2. Que représente un objet en java ?
Un objet est un conteneur qui contient un ensemble de données avec des mécanismes intégrés permettant de les manipuler.
3. Quelle est la différence (ou relation) entre une classe et un objet ?
Il est important de distinguer la relation et les différences existant entre une classe et un objet :
- Un objet est une instance d’une classe. Tandis qu’une classe est définie comme étant un model « Template » correspondant un élément du monde réel.
- Normalement, on devrait parler d’objet qu’à l’exécution d’un programme.
- Un objet est créé grâce au mot clé new en utilisant un constructeur. Alors qu’une classe est définie avec le mot clé class.
- Au cours de l’exécution, on peut avoir plusieurs objets instances d’une classe, alors que la classe concernée n’est déclarée qu’une seule fois.
- La création d’un objet nécessite l’allocation de mémoire cependant ce n’est pas le cas pour une classe.
III. Encapsulation et Héritage
1. En quoi consiste l’encapsulation ?
L’encapsulation consiste à définir la visibilité et l’accessibilité des propriétés et méthodes d’une classe pour mieux en maîtriser leur utilisation.
2. Les niveaux d’accès en JAVA
En Java, il existe quatre niveaux d'accès : public, protected, private et package (non défini / accès par défaut).
Lieu
Niveau
Dans la Classe Classe Fille (même package) Classe Fille (autre package) Même package Autre package public OUI OUI OUI OUI OUI protected OUI OUI OUI OUI NON private OUI NON NON NON NON package OUI OUI NON OUI NON
3. Que signifie l’héritage en POO et quelle est son utilité ?
L’héritage consiste à définir une classe par extension des mécanismes et attributs d’une autre classe. En outre, pour un ensemble d’entités du monde réel donné, cela consiste à regrouper leurs caractéristiques communes dans une classe mère de laquelle seront dérivées les classes (filles) correspondant à ces entités.
A retenir :
- En Java, il est impossible d’hériter de deux ou plusieurs classes. Si un tel besoin se présente, on pourrait se servir des interfaces.
- L’héritage se fait grâce au mot clé extends.
- L’appel d’un constructeur de la classe mère se fait avec le mot-clé super.
- L’héritage permet d’éviter de répéter un code plusieurs fois et de ne pas modifier un code déjà existant dans une classe de base :
Exemple : Class Point → NamedPoint : un point nommé en plus de ses coordonnées.
- Il est fortement conseillé de rendre protected les attributs de la classe mère susceptibles d’être utilisés dans les classes filles,
- Il existe en Java des classes non héritables, par exemple, la classe String.