Das this-Schlüsselwort
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy — Lektion 4 von 87.
Das Schlüsselwort this bezieht sich auf die aktuelle Instanz einer Klasse. Es unterscheidet zwischen Feldern und Parametern mit demselben Namen.
Ohne this überdeckt der Parameter das Feld
public class Person {
private String name;
public Person(String name) {
name = name; // Weist den Parameter sich selbst zu!
}
}Verwendung von this, um Werte korrekt zuzuweisen
public class Person {
private String name;
public Person(String name) {
this.name = name; // Weist dem Feld den Parameter zu
}
public String getName() {
return this.name;
}
}Verwendung von this in Methoden
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getDescription() {
return this.name + " is " + this.age + " years old";
}
}Das Schlüsselwort this zeigt immer auf das aktuelle Objekt. Es ist unverzichtbar, wenn Parameternamen mit Feldnamen übereinstimmen, um Verwirrung und Fehler zu vermeiden.
Aufgabe
MittelVervollständigen Sie die Klasse Person unter Verwendung des Schlüsselworts this, um zwischen Feldern und Parametern zu unterscheiden:
- Ein Konstruktor, der
thisverwendet, um Parameter Feldern zuzuweisen - Getter-Methoden, die
thisverwenden, um auf Felder zuzugreifen - Eine Methode
getDescription(), die"<name>, age <age>, from <city>"zurückgibt
Spickzettel
Das Schlüsselwort this bezieht sich auf die aktuelle Instanz einer Klasse und unterscheidet zwischen Feldern und Parametern mit demselben Namen.
Ohne this überschattet der Parameter das Feld:
public Person(String name) {
name = name; // Weist den Parameter sich selbst zu!
}Verwendung von this, um Werte korrekt zuzuweisen:
public Person(String name) {
this.name = name; // Weist den Parameter dem Feld zu
}Verwendung von this in Getter-Methoden:
public String getName() {
return this.name;
}Verwendung von this mit mehreren Feldern:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getDescription() {
return this.name + " is " + this.age + " years old";
}
}Probier es selbst
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = Integer.parseInt(scanner.nextLine());
String city = scanner.nextLine();
Person person = new Person(name, age, city);
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
System.out.println("City: " + person.getCity());
System.out.println(person.getDescription());
}
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Objektorientierte Programmierung
1Grundlagen der OOP
Externe DateienEinführung in die OOPKlassen vs. ObjekteDas this-SchlüsselwortMethodenFelder (Attribute)Konstruktor-MethodeKonstruktor-ÜberladungRückblick – Einfacher Taschenrechner4Vererbung
Grundlagen der Vererbung (extends)Das super-SchlüsselwortMethoden überschreiben (@Override)Konstruktor-VerkettungDie Object-KlasseEinfache & mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenZusammenfassung - Mitarbeiter-Hierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-InterfaceZusammenfassung – Benutzerdefiniertes Sortieren2Zugriffsmodifikatoren & Kapselung
Überblick über ZugriffsebenenGetter- und Setter-MethodenInformation HidingDas final-SchlüsselwortRückblick – Bankkonto-Manager5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenZusammenfassung – Formenrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, geschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Sealed Classes (Java 17+)11Design Patterns Teil 1
Einführung in Design PatternsSingleton-PatternFactory-PatternBuilder-PatternObserver-PatternStrategy-Pattern14Abschlussherausforderungen
E-Learning-PlattformBanksystemSpielcharakter-EntwicklungFahrzeugvermietung3Klasseneigenschaften & Statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Zusammenfassung – Zähler & Utility6Interfaces & Abstrakte Klassen
Einführung in InterfacesInterfaces implementierenImplementierung mehrerer InterfacesDefault- & statische Methoden in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesZusammenfassung - Zahlungssystem