Heim > Java > javaLernprogramm > Hauptteil

Abstrakte Klassen in Java – Aufschlüsselung

WBOY
Freigeben: 2024-09-04 06:46:32
Original
526 Leute haben es durchsucht

Abstract Classes in Java – Breaking It Down

Was ist eine abstrakte Klasse?

Eine abstrakte Klasse ist wie eine Blaupause für andere Klassen. Sie können ein Objekt nicht direkt aus einer abstrakten Klasse erstellen. Stattdessen verwenden Sie es als Grundlage für andere Kurse, die darauf aufbauen und die Details ergänzen können.

Warum abstrakte Klassen verwenden?

Abstrakte Klassen sind nützlich, wenn Sie ein allgemeines Konzept definieren möchten, das einige gemeinsame Funktionen aufweist, aber auch Raum für spezifische Details lassen möchten, die in verschiedenen Situationen variieren können. Beispielsweise könnten Sie eine allgemeine Vorstellung von einem „Tier“ haben, die gemeinsame Merkmale wie Essen oder Schlafen beinhaltet, aber verschiedene Tiere könnten auf unterschiedliche Weise essen oder schlafen.

Eine abstrakte Klasse erstellen

So können Sie eine abstrakte Klasse namens Animal erstellen:

public abstract class Animal {
    abstract void makeSound();  // Abstract method, no body

    void sleep() {
        System.out.println("This animal sleeps.");
    }
}
Nach dem Login kopieren

In diesem Beispiel ist makeSound() eine abstrakte Methode, das heißt, sie hat noch keinen Körper. Die Methode sleep() ist jedoch vollständig implementiert.

Erweitern einer abstrakten Klasse

Jetzt erstellen wir einige Klassen, die die Animal-Klasse erweitern:

public class Dog extends Animal {
    void makeSound() {
        System.out.println("The dog barks.");
    }
}

public class Cat extends Animal {
    void makeSound() {
        System.out.println("The cat meows.");
    }
}
Nach dem Login kopieren

Sowohl die Dog- als auch die Cat-Klasse müssen ihre eigene Version der makeSound()-Methode bereitstellen, aber sie erben die sleep()-Methode unverändert.

Abstrakte Klasse vs. Schnittstelle

  • Vererbung:Eine Klasse kann nur eine abstrakte Klasse erweitern, aber mehrere Schnittstellen implementieren.
  • Methodenimplementierung: Eine abstrakte Klasse kann sowohl abstrakte Methoden (ohne Körper) als auch vollständig implementierte Methoden haben. Eine Schnittstelle (vor Java 8) kann nur abstrakte Methoden haben.
  • Konstruktor:Abstrakte Klassen können Konstruktoren haben, Schnittstellen jedoch nicht.

Teilweise Umsetzung

Eine abstrakte Klasse ist großartig, wenn Sie einige Methoden haben, die von allen untergeordneten Klassen gemeinsam genutzt werden sollten, Sie aber auch erzwingen möchten, dass einige Methoden von diesen untergeordneten Klassen definiert werden.

public abstract class Bird extends Animal {
    void move() {
        System.out.println("The bird flies.");
    }
}
Nach dem Login kopieren

Jetzt erbt jede Klasse, die Bird erweitert, sowohl die move()-Methode als auch die sleep()-Methode von Animal, muss aber weiterhin makeSound() implementieren.

Herausforderung: Probieren Sie es selbst aus!

  1. Erstellen Sie eine abstrakte Klasse namens Vehicle mit einer abstrakten Methode startEngine().
  2. Erstellen Sie zwei Klassen, Car und Motorcycle, die Vehicle erweitern und die startEngine()-Methode implementieren.
  3. Fügen Sie eine allgemeine Methode zu Vehicle hinzu, wie stopEngine(), und sehen Sie, wie sie in den untergeordneten Klassen funktioniert.

Fazit

Abstrakte Klassen in Java bieten eine Möglichkeit, eine gemeinsame Grundlage für verwandte Klassen zu schaffen und gleichzeitig Raum für die Definition spezifischer Details durch diese Klassen zu lassen. Sie schaffen ein Gleichgewicht zwischen gemeinsamer Funktionalität und Flexibilität und machen Ihren Code sowohl leistungsstark als auch wiederverwendbar.

Das obige ist der detaillierte Inhalt vonAbstrakte Klassen in Java – Aufschlüsselung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:dev.to
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage