Méthodes privées
Fait partie de la section Programmation Orientée Objet du Journey JavaScript de Coddy — leçon 19 sur 56.
Les méthodes privées dans les classes JavaScript vous permettent de masquer les détails d'implémentation et d'empêcher l'accès externe aux fonctionnalités internes.
À partir d'ES2022, les méthodes privées peuvent être définies en utilisant le préfixe # :
class Counter {
#count = 0;
// Créer une méthode privée
#increment() {
this.#count++;
}
// Méthode publique qui utilise la méthode privée
addOne() {
this.#increment();
return this.#count;
}
}Créons une instance de Counter :
const myCounter = new Counter();Nous pouvons appeler la méthode publique :
console.log(myCounter.addOne()); // Résultat : 1Mais tenter d'accéder directement à la méthode privée provoquera une erreur :
myCounter.#increment(); // Erreur : La méthode privée n'est pas accessible en dehors de la classeLes méthodes privées aident à maintenir l'encapsulation en gardant les détails d'implémentation interne cachés du monde extérieur.
Défi
On vous donne une classe MessageBox qui stocke des messages. Votre tâche consiste à ajouter une méthode privée appelée #isValidMessage(text) qui valide les messages. Elle doit :
- Retourner
truesi le texte n'est pas vide et fait moins de 100 caractères - Retourner
falsesinon
Aide-mémoire
Les méthodes privées dans les classes JavaScript sont définies à l'aide du préfixe # et ne peuvent être consultées qu'à l'intérieur de la classe :
class Counter {
#count = 0;
// Méthode privée
#increment() {
this.#count++;
}
// Méthode publique qui utilise la méthode privée
addOne() {
this.#increment();
return this.#count;
}
}Les méthodes privées ne peuvent pas être consultées depuis l'extérieur de la classe :
const myCounter = new Counter();
myCounter.addOne(); // Fonctionne
myCounter.#increment(); // Erreur : La méthode privée n'est pas accessibleLes méthodes privées aident à maintenir l'encapsulation en masquant les détails d'implémentation internes.
Essayez vous-même
import { MessageBox } from './messageBox.js';
// Utilisation de la boîte de message
const box = new MessageBox();
console.log(box.setMessage("Hello")); // "Message set!" (utilise #isValidMessage)
console.log(box.setMessage("")); // "Invalid message!" (utilise #isValidMessage)
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Programmation Orientée Objet
1Objets et le mot-clé this
Révision rapide : Les objetsAjouter des méthodes aux objetsComprendre le mot-clé thisFonctions constructeursLe mot-clé newDéfi récapitulatif7L'héritage et le mot-clé extends
L'héritageLa relation « est un »Le mot-clé extendsLa méthode super()Hériter des propriétés et méthodesDéfi récapitulatif10Polymorphisme
Qu'est-ce que le polymorphisme ?Redéfinition de méthodes héritéesUtiliser superDéfi récapitulatif13Composition vs Héritage
Les relations « has-a » vs « is-a »Les limites de l'héritage profondConstruction d'objets2Organisation du code
Qu'est-ce qu'un module ?Exporter avec exportImporter avec importExports par défaut vs nommés5Encapsulation & Accès
EncapsulationChamps de classe publics et privésMéthodes privéesDéfi récapitulatif8Organisation du code POO
Organiser les classes en modules11Projet : Un moteur de rendu de formes
Configuration : Classe Shape et ExportationHéritage de la classe Circle14Système de gestion de bibliothèque
Conception de la bibliothèqueClasse Book avec composition3Classes et Objets
Qu'est-ce qu'une classe ?Créer des instancesPropriétés et méthodesDéfi récapitulatif9Méthodes et propriétés statiques
Niveau classe vs Niveau instancePropriétés statiquesMéthodes utilitaires statiquesDéfi récapitulatif