Die Object-Klasse
Teil des Abschnitts Objektorientierte Programmierung der Java-Journey von Coddy. Lektion 24 von 87.
In Java erbt jede Klasse, die Sie erstellen, automatisch von einer speziellen Klasse namens Object. Selbst wenn Sie nirgendwo extends schreiben, ist Ihre Klasse immer noch ein Kind von Object. Dies macht Object zur Wurzel der gesamten Klassenhierarchie.
public class Person {
// Dies erweitert implizit Object
}
// Ist äquivalent zu:
public class Person extends Object {
}Da jede Klasse von Object erbt, hat jedes Objekt in Java Zugriff auf mehrere integrierte Methoden. Zu den am häufigsten verwendeten gehören:
| Methode | Zweck |
|---|---|
toString() | Gibt eine String-Repräsentation des Objekts zurück |
equals(Object obj) | Vergleicht zwei Objekte auf Gleichheit |
hashCode() | Gibt einen Hashcode-Wert für das Objekt zurück |
getClass() | Gibt die Laufzeitklasse des Objekts zurück |
Standardmäßig verfügen diese Methoden über generische Implementierungen. Zum Beispiel gibt toString() den Klassennamen gefolgt von @ und dem Hash-Code des Objekts in Hexadezimalform zurück, was nicht besonders nützlich ist:
Person p = new Person();
System.out.println(p.toString()); // Ausgabe: Person@1a2b3c4dAus diesem Grund werden Sie diese Methoden in Ihren eigenen Klassen häufig überschreiben, um ein aussagekräftiges Verhalten bereitzustellen. Das Verständnis, dass Object die universelle Elternklasse ist, hilft zu erklären, warum Sie jedes Objekt in einer Object-Variablen speichern können und warum bestimmte Methoden für jedes von Ihnen erstellte Objekt verfügbar sind.
Aufgabe
EinfachSehen wir uns an, wie die Klasse Object als universelle Oberklasse aller Java-Klassen dient, indem wir ein einfaches Inventarsystem für Gadgets erstellen, das geerbte Methoden von Object demonstriert.
Du erstellst drei Dateien, um deinen Code zu organisieren:
Gadget.java: Erstelle eine Klasse, die ein elektronisches Gadget darstellt. Deine Klasse sollte Folgendes enthalten:- Private Felder für
name(String) undyear(int) - Einen Konstruktor, der beide Felder initialisiert
- Getter-Methoden
getName()undgetYear()
- Private Felder für
Smartphone.java: Erstelle eine Unterklasse, die Gadget erweitert und smartphonespezifische Funktionen hinzufügt:- Ein privates Feld für
brand(String) - Einen Konstruktor, der name, year und brand übernimmt – verwende
super(name, year)für den Teil der Elternklasse - Eine Methode
getBrand(), die die Marke zurückgibt - Überschreibe die Methode
toString(), sodass sie Folgendes zurückgibt:Smartphone: [brand] [name] ([year])
- Ein privates Feld für
Main.java: Demonstriere den Unterschied zwischen standardmäßigen und überschriebenenObject-Methoden. Du erhältst drei Eingaben: einen Gadget-Namen, ein Jahr und eine Marke. Erstelle sowohl einGadgetals auch einSmartphonemit demselben Namen und Jahr (sowie der Marke für das Smartphone), und führe dann Folgendes aus:- Gib den Klassennamen des Gadgets mit
getClass().getSimpleName()aus - Gib aus, ob das standardmäßige
toString()des Gadgets das Symbol „@“ enthält (gibtrueoderfalseaus) - Gib das Smartphone mit seinem überschriebenen
toString()aus
- Gib den Klassennamen des Gadgets mit
Du erhältst drei Eingaben: den Namen des Gadgets/Smartphones (String), das Jahr (int) und die Marke (String).
Diese Herausforderung zeigt, warum das Überschreiben von Object-Methoden wichtig ist – das standardmäßige toString() liefert dir etwas wie Gadget@1a2b3c, während deine benutzerdefinierte Version aussagekräftige Informationen bereitstellt!
Probier es selbst
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
// Eingaben lesen
String name = scanner.nextLine();
int year = scanner.nextInt();
scanner.nextLine(); // Zeilenumbruch konsumieren
String brand = scanner.nextLine();
// TODO: Erstelle ein Gadget-Objekt mit name und year
// TODO: Erstelle ein Smartphone-Objekt mit name, year und brand
// TODO: Gib den Klassennamen des Gadgets mit getClass().getSimpleName() aus
// TODO: Gib aus, ob die toString()-Methode des Gadgets "@" enthält (true oder false)
// TODO: Gib das Smartphone aus (verwendet die überschriebene toString()-Methode)
}
}
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 Schlüsselwort thisMethodenFelder (Attribute)KonstruktormethodeÜberladen von KonstruktorenRückblick – Einfacher Taschenrechner4Vererbung
Grundlegende Vererbung (extends)Das Schlüsselwort superÜberschreiben von Methoden (@Override)KonstruktorverkettungDie Object-KlasseEinfach- und mehrstufige VererbungWarum keine Mehrfachvererbung von KlassenRückblick – Mitarbeiterhierarchie7Spezielle Methoden & Object-Klasse
toString()-Methodeequals() und hashCode()clone()-MethodecompareTo() und ComparableComparator-SchnittstelleRückblick – Benutzerdefinierte Sortierung2Zugriffsmodifikatoren & Kapselung
Übersicht der ZugriffsebenenGetter- und Setter-MethodenInformationsverbergungDas Schlüsselwort finalRückblick – Bankkontoverwaltung5Polymorphismus
Grundlagen der MethodenüberladungMethodenüberschreibung (Laufzeit)Upcasting und DowncastingDer instanceof-OperatorAbstrakte Klassen und MethodenRückblick – Formrechner8Fortgeschrittene OOP-Konzepte
Komposition vs. VererbungAggregation vs. KompositionInnere, verschachtelte & anonyme KlassenEnums und Enum-MethodenRecords (Java 16+)Versiegelte Klassen (Java 17+)11Entwurfsmuster Teil 1
Einführung in EntwurfsmusterSingleton-MusterFactory-MusterBuilder-MusterObserver-MusterStrategie-Muster14Abschließende Herausforderungen
E-Learning-PlattformBankingsystemEntwicklung einer SpielfigurFahrzeugvermietungsdienst3Klassen-Props & statische Member
Instanz- vs. statische VariablenStatische MethodenStatische BlöckeKonstanten (static final)Wiederholung – Counter & Utility6Schnittstellen & abstrakte Klassen
Einführung in InterfacesInterfaces implementierenMehrere Interfaces implementierenDefault & Static in InterfacesAbstrakte Klassen vs. InterfacesFunktionale InterfacesRückblick – ZahlungssystemÜbe selbstständig: Online-Java-Compiler