POO

Classes et objets

Il est possible et pas interdit de créer plusieurs classes différentes au sein d’un même fichier (ce sont des classes internes) mais c’est une mauvaise pratique me semble t-il.
Dans ce cas, une seule sera nommée Public et les autres sans nommage Public (càd visibilité package).
Il me semble que ce principe est aussi valable dans d’autres langages de programmation orienté objet.

Source : https://blog.paumard.org/cours/java/chap04-structure-classe-classe.html#:~:text=En%20Java%2C%20les%20classes%20sont,en%20%C3%A9crire%20qu’une%20seule.
« Classes internes »
« On peut pas avoir plus d’une classe publique dans un fichier donné. En revanche, on peut ajouter d’autres classes, non publiques … »

PS: Confère aussi à ma remarque suivant, Leçon 35: Les classes internes

Attributs et constructeur

Il est possible et pas interdit de créer plusieurs classes différentes au sein d’un même fichier (ce sont des classes internes) mais c’est une mauvaise pratique me semble t-il.
Dans ce cas, une seule sera nommée Public et les autres sans nommage Public (càd visibilité package).
Il me semble que ce principe est aussi valable dans d’autres langages de programmation orienté objet.

Source : https://blog.paumard.org/cours/java/chap04-structure-classe-classe.html#:~:text=En%20Java%2C%20les%20classes%20sont,en%20%C3%A9crire%20qu’une%20seule.
« Classes internes »
« On peut pas avoir plus d’une classe publique dans un fichier donné. En revanche, on peut ajouter d’autres classes, non publiques … »

PS: Confère aussi à ma remarque suivant, Leçon 35: Les classes internes

Les méthodes

En java, les fonctions n’existent pas en dehors des classes et donc on parlera plutôt de méthodes que de fonctions?

Héritage

Quand on parle d’héritage, il y a distinction entre la surchage et redéfinition de méthodes.
En effet dans la classe enfant:

  • On redéfinie les getters et setters de la classe parent via l’annotation @Overrride, cela exprime le fait que l’on rédéfinie le comportent de ces méthodes dans la classe enfant
  • On peut éventuellement surcharger les autres méthodes ou le constructeur et ces derniers ne sont pas héritées.
    Source: https://objis.com/tutoriel-java-n10-surcharge-et-redefinition
    La surcharge d’une méthode permet de définir plusieurs fois une même méthode avec des arguments différents.
    Le compilateur choisit la méthode qui doit être appelée en fonction du nombre et du type des arguments.

Interfaces

Utilisation d’un interface: « l’interface peut ensuite être implémentée par une classe fille » => OK
Mais …
=> Une interface peut aussi être implémentée par n’importe quelle autres classes et pas uniquement que par la classe fille dans le cadre de l’héritage
=> Source de confusion d’employer le terme « classe fille » quand on parle d’une classe qui implémente une interface:

  • une classe n’hérite pas d’une interface mais l’implémente avec le mot clé « implements »
  • une classe peut « implements » plusieurs interfaces mais pas « extends »
    => Bien entendu, les interfaces permettent à une classe de faire « une sorte d’héritage multiple »

Classes internes

Dans mon expérience pro, j’ai rarement vu l’utilisation des classes internes (sauf quelques fois les classes anonymes).
A mon avis, c’est pour des raisons de clarté du code, de rendre le code maintenable et de faciliter le travail en équipe.

Une question: peut-on aussi qualifier de « classe interne » une classe qui est écrite dans le même fichier qui porte la classe principale (que j’ai déjà évoquée dans ma remarque leçon 27)?

Exemple avec classes Marin et Capitaine ci-dessous et qui sont écrites dans le même fichier Marin.java:
source citation: https://blog.paumard.org/cours/java/chap04-structure-classe-classe.html#:~:text=En%20Java%2C%20les%20classes%20sont,en%20%C3%A9crire%20qu’une%20seule

public class Marin { // doit être écrite dans le fichier Marin.java
… // code de la classe
}

class Capitaine { // écrite dans le même fichier Marin.java sans mot clé « public »
… // code de la classe Capitaine
}

===> La classe Capitaine est-elle une classe interne?
Merci de me confirmer 🙂

Leave a Comment