Menu
Coddy logo textTech

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:

MethodeZweck
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@1a2b3c4d

Aus 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.

challenge icon

Aufgabe

Einfach

Sehen 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) und year (int)
    • Einen Konstruktor, der beide Felder initialisiert
    • Getter-Methoden getName() und getYear()
    Überschreibe keine Methoden aus Object – wir möchten zuerst das Standardverhalten sehen.
  • 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])
  • Main.java: Demonstriere den Unterschied zwischen standardmäßigen und überschriebenen Object-Methoden. Du erhältst drei Eingaben: einen Gadget-Namen, ein Jahr und eine Marke. Erstelle sowohl ein Gadget als auch ein Smartphone mit 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 (gib true oder false aus)
    • Gib das Smartphone mit seinem überschriebenen toString() aus

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)
        
    }
}
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

Übe selbstständig: Online-Java-Compiler