📜  java vererbung 方法 - Java (1)

📅  最后修改于: 2023-12-03 15:01:32.723000             🧑  作者: Mango

Java Vererbung Methoden

In der Programmierung ist Vererbung vom Konzept abgeleitet, dass eine neue Klasse auf einer bereits vorhandenen Klasse basieren kann. Die bereits existierende Klasse wird als Eltern- oder Basisklasse bezeichnet, während die neu erstellte Klasse als Kind- oder Subklasse bezeichnet wird. Die Vererbung erlaubt es, Code wiederzuverwenden und führt zu einer Strukturierung des Codes, welches eine verbesserte Übersichtlichkeit und Wartbarkeit ermöglicht.

Grundlagen

In der OOP-Programmierung (Objektorientierte Programmierung) in Java werden Objekte erstellt, indem eine Klasse instanziiert wird. Eine Klasse kann als Blaupause für die Objekterstellung angesehen werden. Eine Klasse kann auch Attribute und Methoden enthalten. Attribute sind die Datenelemente der Klasse, während Methoden die Verarbeitungselemente der Klasse sind.

Eine Klasse kann auch eine Vererbungshierarchie enthalten. Eine Kind- oder Subklasse kann alle Eigenschaften und Methoden der Eltern- oder Basisklasse und der darüberliegenden Klassen erben.

Syntax
class ParentClass {
    // Attribute und Methoden
}

class ChildClass extends ParentClass {
    // Attribute und Methoden
}
Beispiel
class Vehicle {
    void run() {
        System.out.println("Das Fahrzeug fährt");
    }
}

class Car extends Vehicle {
    public static void main(String[] args) {
        Car BMW = new Car();
        BMW.run();
    }
}

Das obige Beispiel zeigt die Vererbung in Java. Die Klasse Vehicle definiert eine Methode run(), die die Nachricht "Das Fahrzeug fährt" ausgibt. Die Klasse Car erbt die Methode run() von der Klasse Vehicle. Ein neues Car-Objekt wird erstellt und aufgerufen, um die run()-Methode auszuführen.

Methodenvererbung

Eine Subklasse erbt alle Methoden der Elternklasse, jedoch können diese Methoden in der Subklasse überschrieben oder erweitert werden. Die Überschreibung ist auch als Overriding bezeichnet und ermöglicht es, die Implementierung einer Methode in der Kindklasse zu ändern.

Syntax
class ParentClass {
    void run() {
        System.out.println("Fahrzeug fährt...");
    }
}

class ChildClass extends ParentClass {
    void run() {
        System.out.println("Auto fährt...");
    }
}
Beispiel
class Vehicle {
    void run() {
        System.out.println("Das Fahrzeug fährt");
    }
}

class Car extends Vehicle {
    void run() {
        System.out.println("Das Auto fährt");
    }

    public static void main(String[] args) {
        Vehicle BMW = new Car();
        BMW.run();
    }
}

Das obige Beispiel zeigt die Überschreibung der run()-Methode in der Kinderklasse. Die Vehicle-Klasse enthält eine run()-Methode, die in der Car-Klasse durch eine eigene run()-Methode überschrieben wird. Ein neues Car-Objekt wird erstellt und aufgerufen, um die run()-Methode auszuführen.

Wenn eine Methode in der Subklasse aufgerufen wird, sucht Java zuerst in der Subklasse nach dieser Methode. Wenn sie dort gefunden wird, wird sie ausgeführt. Andernfalls sucht Java in der Elternklasse.

Zugriffsmodifikatoren und Vererbung

Zugriffsmodifikatoren werden verwendet, um den Zugriff auf Klassen, Variablen und Methoden zu steuern. Sie ermöglichen die Definition, wer auf bestimmte Elemente einer Klasse zugreifen kann. In Bezug auf Vererbung haben Zugriffsmodifikatoren auf Attribute und Methoden der Basisklasse auch Auswirkungen auf die Kindklasse.

Die folgenden vier Zugriffsmodifikatoren können in Java definiert werden:

  • public: Jeder kann darauf zugreifen.
  • protected: Kindklassen können darauf zugreifen.
  • ohne Modifikator (package-level - default): Nur Klassen im gleichen Paket können darauf zugreifen.
  • private: Niemand kann darauf zugreifen.
Beispiel
class Vehicle {
    protected String brand = "BMW";
    public void run() {
        System.out.println("Das Fahrzeug fährt.");
    }
}

class Car extends Vehicle {
    private String model = "i8";

    public static void main(String[] args) {
        Car BMW = new Car();
        BMW.run();
        System.out.println(BMW.brand);
        // System.out.println(BMW.model); // Compile Error
    }
}

In diesem Beispiel sind die Attribute brand und model in der Basisklasse und Kindklasse in unterschiedlichen Zugriffsmodifikatoren definiert. Das Attribut brand wird mit dem protected-Zugriffsmodifikator in der Basisklasse definiert. Der protected-Zugriffsmodifikator ermöglicht einer Kindklasse den Zugriff auf das Attribut, was im main()-Methode des Kindes gezeigt wird.

Das Attribut model wird in der Kindklasse mit dem private-Zugriffsmodifikator definiert. Das private-Zugriffsmodifikator macht das Attribut nur für die Klasse sichtbar, in der es deklariert wurde, was bedeutet, dass in der main()-Methode des Kindes kein Zugriff darauf möglich ist.

Schlussfolgerung

Die Vererbung in Java ist ein mächtiges Konzept, das es ermöglicht, Code wiederzuverwenden und eine klare Strukturierung von Klassen zu erreichen. Die Vererbung von Methoden ermöglicht es, Methoden der Elternklasse in der Kindklasse zu überschreiben und erweitern, wodurch die Flexibilität und Funktionalität der Klassen und Objekte erweitert wird. Die Vererbung und Zugriffsmodifikatoren sorgen für einen klaren Zugriff und die Angabe von Berechtigungen für Attribute und Methoden in der Basisklasse und Kindklasse.