Menu
Coddy logo textTech

Private Methoden

Teil des Abschnitts Objektorientierte Programmierung der JavaScript-Journey von Coddy — Lektion 19 von 56.

Private Methoden in JavaScript-Klassen ermöglichen es Ihnen, Implementierungsdetails zu verbergen und den externen Zugriff auf interne Funktionalitäten zu verhindern.

Ab ES2022 können private Methoden mit dem #-Präfix definiert werden:

class Counter {
  #count = 0;
  
  // Erstelle eine private Methode
  #increment() {
    this.#count++;
  }
  
  // Öffentliche Methode, die die private Methode verwendet
  addOne() {
    this.#increment();
    return this.#count;
  }
}

Erstellen wir eine Counter-Instanz:

const myCounter = new Counter();

Wir können die öffentliche Methode aufrufen:

console.log(myCounter.addOne()); // Ausgabe: 1

Aber der Versuch, direkt auf die private Methode zuzugreifen, wird einen Fehler verursachen:

myCounter.#increment(); // Fehler: Private Methode ist außerhalb der Klasse nicht zugänglich

Private Methoden helfen dabei, die Kapselung aufrechtzuerhalten, indem sie interne Implementierungsdetails vor der Außenwelt verborgen halten.

challenge icon

Aufgabe

Dir wird eine MessageBox-Klasse gegeben, die Nachrichten speichert. Deine Aufgabe ist es, eine private Methode namens #isValidMessage(text) hinzuzufügen, die Nachrichten validiert. Sie sollte:

  • true zurückgeben, wenn der Text nicht leer ist und weniger als 100 Zeichen hat
  • Andernfalls false zurückgeben

Spickzettel

Private Methoden in JavaScript-Klassen werden mit dem Präfix # definiert und können nur von innerhalb der Klasse aufgerufen werden:

class Counter {
  #count = 0;
  
  // Private Methode
  #increment() {
    this.#count++;
  }
  
  // Öffentliche Methode, die die private Methode verwendet
  addOne() {
    this.#increment();
    return this.#count;
  }
}

Auf private Methoden kann nicht von außerhalb der Klasse zugegriffen werden:

const myCounter = new Counter();
myCounter.addOne(); // Funktioniert
myCounter.#increment(); // Fehler: Private Methode ist nicht zugänglich

Private Methoden helfen dabei, die Kapselung aufrechtzuerhalten, indem sie interne Implementierungsdetails verbergen.

Probier es selbst

import { MessageBox } from './messageBox.js';

// Verwendung der Nachrichtenbox
const box = new MessageBox();

console.log(box.setMessage("Hello"));    // "Message set!" (verwendet #isValidMessage)
console.log(box.setMessage(""));         // "Invalid message!" (verwendet #isValidMessage)
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Objektorientierte Programmierung