Öffentliche & private Klassenfelder
Teil des Abschnitts Objektorientierte Programmierung der JavaScript-Journey von Coddy — Lektion 18 von 56.
In JavaScript-Klassen können wir zwei Arten von Klassenfeldern definieren: public und private.
Öffentliche Felder sind von außerhalb der Klasse zugänglich und können von jedem verwendet werden.
Erstellen Sie eine Klasse mit öffentlichen Feldern:
class Student {
name = '';
grade = 0;
constructor(name, grade) {
this.name = name;
this.grade = grade;
}
}Erstellen Sie eine Student-Instanz:
const student = new Student('Alice', 95);Greifen Sie von außerhalb der Klasse auf öffentliche Felder zu:
console.log(student.name); // Ausgabe: "Alice"
student.grade = 98;
console.log(student.grade); // Ausgabe: 98Private Felder werden mit dem Symbol # gekennzeichnet und können nur von innerhalb der Klasse aufgerufen werden:
class Student {
name = '';
#grade = 0;
constructor(name, grade) {
this.name = name;
this.#grade = grade;
}
getGrade() {
return this.#grade;
}
updateGrade(newGrade) {
this.#grade = newGrade;
}
}Verwendung privater Felder:
const student = new Student('Bob', 87);
console.log(student.name); // Ausgabe: "Bob"
// Zugriff auf ein privates Feld über eine Methode
console.log(student.getGrade()); // Ausgabe: 87
// Aktualisieren eines privaten Feldes über eine Methode
student.updateGrade(92);
console.log(student.getGrade()); // Ausgabe: 92
// Dies würde einen Fehler verursachen:
// console.log(student.#grade); // SyntaxErrorAufgabe
- Füge zwei Felder in die Klasse namens UserAccount ein:
- Ein öffentliches Feld
username - Ein privates Feld
#password
- Ein öffentliches Feld
- Füge einen Konstruktor hinzu, der die Parameter
usernameundpasswordentgegennimmt
Spickzettel
JavaScript-Klassen unterstützen öffentliche (public) und private Felder.
Öffentliche Felder sind von außerhalb der Klasse zugänglich:
class Student {
name = '';
grade = 0;
constructor(name, grade) {
this.name = name;
this.grade = grade;
}
}
const student = new Student('Alice', 95);
console.log(student.name); // Output: "Alice"
student.grade = 98;Private Felder verwenden das #-Symbol und können nur innerhalb der Klasse aufgerufen werden:
class Student {
name = '';
#grade = 0;
constructor(name, grade) {
this.name = name;
this.#grade = grade;
}
getGrade() {
return this.#grade;
}
updateGrade(newGrade) {
this.#grade = newGrade;
}
}
const student = new Student('Bob', 87);
console.log(student.getGrade()); // Output: 87
student.updateGrade(92);
// student.#grade würde einen SyntaxError verursachenProbier es selbst
import { UserAccount } from './userAccount.js';
// Testcode - nicht ändern
const user = new UserAccount("alice", "secret123");
console.log(user.username); // Sollte "alice" ausgeben
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Objekte & das this-Schlüsselwort
Kurze Wiederholung: ObjekteMethoden zu Objekten hinzufügenDas this-Schlüsselwort verstehenKonstruktorfunktionenDas new-SchlüsselwortWiederholungs-Challenge7Vererbung & das extends-Schlüsselwort
VererbungDie „ist-ein“-BeziehungDas extends-SchlüsselwortDie super()-MethodeVererben von Eigenschaften & MethodenWiederholungs-Challenge10Polymorphie
Was ist Polymorphie?Geerbte Methoden überschreibenVerwendung von superWiederholungs-Challenge13Komposition vs. Vererbung
Die "hat-ein"- vs. "ist-ein"-BeziehungDie Grenzen tiefer VererbungObjekte zusammenbauen2Code organisieren
Was sind Module?Exportieren mit exportImportieren mit importDefault- vs. benannte Exports5Kapselung & Zugriff
KapselungÖffentliche & private KlassenfelderPrivate MethodenWiederholungs-Herausforderung8OOP-Code strukturieren
Klassen in Modulen organisieren11Projekt: Ein Shape-Renderer
Setup: Shape-Klasse & ExportCircle-Klasse: Vererbung14Bibliotheksverwaltungssystem
Entwurf der BibliothekBuch-Klasse mit Komposition3Klassen & Objekte
Was ist eine Klasse?Instanzen erstellenEigenschaften und MethodenWiederholungs-Challenge6Projekt: Ein einfaches Bankkonto
Klasse BankAccountEinzahlungen und Auszahlungen9Statische Methoden & Eigenschaften
Klassenebene vs. InstanzebeneStatische EigenschaftenStatische HilfsmethodenWiederholungs-Challenge12Getter & Setter
Die Schlüsselwörter get und setBerechnete EigenschaftenValidierung und SeiteneffekteWiederholungs-Challenge15Abschluss-Herausforderungen
Spielfiguren-BuilderE-Commerce ProduktsystemUniversitäts-VerwaltungssystemSmart-Home-Gerätesystem