Abstract Klasse vs. Schnittstelle in Java: Erklärung mit Beispielen
Abstract Klassen und Schnittstellen werden verwendet abstractIon in Java. Abstraction in der objektorientierten Programmierung bezieht sich auf das Verbergen von Implementierungsdetails vor den Endbenutzern.
In abstraction, Sie können wissen, welche Funktionalitäten es gibt, aber Sie können nicht wissen, wie sie implementiert wurden.
Schauen wir uns jeden von ihnen an und versuchen zu verstehen, warum sie verwendet werden.
Abstract Klasse
Eine Klasse, die nicht instanziiert sein kannated als Objekt und kann es haben oder auch nicht abstract Die darin enthaltenen Methoden werden als an bezeichnet abstract Klasse in JavacEine abstract Methode ist eine Methode, die bei der Deklaration keinen Implementierungskörper hat.

Sie können erstellenate an abstract Klasse durch Angabe der abstract
Stichwort vor dem class
Stichwort.
abstract class abstractClass {
void run() {
System.out.println("ran");
}
}
An abstract Klasse kann durch andere Klassen erweitert werden. Mit anderen Worten, es kann auch in Unterklassen unterteilt werden.
abstract class AbstractClass {
void run() {
System.out.println("ran");
}
}
class ExtendingAbstractClass extends AbstractClass {
void newMethod() {
System.out.println("new");
}
@Override
void run() {
System.out.println("override");
}
}
Abstract Klassen werden verwendet, um gemeinsame Methoden mehrerer Klassen zu implementieren, die eine bestimmte Klasse erweitern abstract Klasse. Auch die Fähigkeit zur Definition abstract Methoden im Inneren abstract Klassen machen sie unglaublich nützlich für Klassen, die ähnliche Methoden, aber unterschiedliche Implementierungen haben. Nehmen wir ein Beispiel.
Stellen Sie sich ein Auto vor, das über einige Funktionen verfügt, wie zum Beispiel Start, Stopp, revusw. Diese Funktionen sind bei allen Fahrzeugtypen gleich.
Aber wie sieht es mit Automatisierungsfunktionen aus, z self-Fahren? Die Implementierung dieser Funktionen kann je nach Fahrzeugtyp unterschiedlich sein. Mal sehen, wie Sie erstellen könnenate ein objektorientiertes Programm related dazu.
Zunächst einmal, Create a Car
Klasse, die um mehrere Klassen verschiedener Fahrzeugtypen erweitert wird.
abstract class Car {
void start() {
// implementation
System.out.println("runs car");
}
void stop() {
// implementation
System.out.println("engine stops");
}
void reverse() {
// implementation
System.out.println("reverse mode enabled");
}
abstract void selfDrive();
}
Das Verfahren start()
, stop()
und reverse()
sind Methoden, die in allen Autos üblich sind. Daher ist ihre Implementierung bereits innerhalb der Car-Klasse definiertself. Für einen bestimmten Fahrzeugtyp kann es jedoch unterschiedliche Implementierungen geben self-Fahrmodus. Und so können Sie definieren selfDrive()
als abstract Methode und implementieren Sie sie auf unterschiedliche Weise in verschiedenen Klassen verschiedener Fahrzeugtypen.
class CarTypeA extends Car {
@Override
void start() {
super.start();
}
@Override
void stop() {
super.stop();
}
@Override
void reverse() {
super.reverse();
}
void selfDrive() {
// custom implementation
System.out.println("Type A self driving mode enabled");
}
}
class CarTypeB extends Car {
// ...all similar methods
void selfDrive() {
// custom implementation
// different implementation than CarTypeB
System.out.println("Type B self driving mode enabled");
}
}
Es ist wichtig zu beachten, dass eine Unterklasse nicht alle implementiert abstract Methoden definiert in der abstract Klasse, dann sollte sie als deklariert werden abstract Klasse esself.
Schnittstelle
Eine Schnittstelle ist eine Möglichkeit, einer Klasse mitzuteilen, welche Methoden von ihr implementiert werden müssen. Wenn Sie zum Beispiel das Beispiel eines Autos betrachten, hat es einige grundlegende Funktionen. Es kann starten, sich bewegen und stoppen. Diese Funktionen sind in allen Autos gleich.
Wenn Sie also eine Schnittstelle eines Autos in einer Klasse implementieren, müssen Sie alle Methoden implementieren, damit das Auto ordnungsgemäß und sicher funktioniert.
Ähnlich abstract Klassen können wir nicht instanziierenate oder create Objekte einer Schnittstelle. Es kann als vollständig angesehen werden abstract Klasse, weil sie nur enthält abstract Methoden, also Methoden ohne Implementierungskörper.
Sie können erstellenate eine Schnittstelle unter Verwendung der interface
Stichwort.
interface CAR {
void start();
void stop();
void move();
}
Implementieren Sie eine Schnittstelle mit der implements
Schlüsselwort beim Definieren einer Klasse.
class CarTypeB implements CAR {
public void start() {
System.out.println("started");
}
public void stop() {
System.out.println("stopped");
}
public void move() {
System.out.println("running");
}
}
Ähnlichkeit
Keine Instanziierung als Objekt ist das Einzige abstract Klassen und Schnittstellen haben etwas gemeinsam.
Differenzen
Abstract Klasse | Schnittstelle | |
Vererbung & Implementierung | Nur eine abstract Eine Klasse kann von einer Klasse geerbt werden. | Mehrere Schnittstellen können durch eine Klasse implementiert werden. |
Variablentypen | Es kann finale, nicht-finale, statische und nicht-statische Variablen haben. | Es kann nur statische und finale Variablen haben. |
Methodentypen | Es kann beides enthalten abstract sowie Nicht-abstract Methoden. | Es kann nur enthalten abstract Methoden, statische Methoden sind jedoch eine Ausnahme. |
Zugriffsmodifikatoren | An abstract Die Klasse kann einen Zugriffsmodifikator haben. | Die in der Schnittstelle definierten Methodensignaturen sind standardmäßig öffentlich. Eine Schnittstelle hat keinen Zugriffsmodifizierer. |
Konstruktoren & Destruktoren | Es kann Konstruktoren und Destruktoren deklarieren. | Es kann keine Konstruktoren oder Destruktoren deklarieren. |
Schnelligkeit | Schnell | Bremst |
Wann zu verwenden abstract Klasse und Schnittstelle?
Verwenden Sie die abstract Klassen, wenn:
- Sie möchten einige gemeinsame Methoden und Felder für mehrere Klassen freigeben.
- Erklären
non-static
undnon-final
Felder, um die st zu ändernate des Objekts, an das sie gebunden sind.
Sie können Schnittstellen verwenden, wenn:
- Sie möchten das Verhalten einer Klasse definieren, die die Schnittstelle implementiert, aber es interessiert Sie nicht, wie sie implementiert wird.
- Sie möchten sicherstellen, dass eine Klasse alle Methoden implementiert, um ordnungsgemäß zu funktionieren.
Zusammenfassung
Schnittstellen werden hauptsächlich zur Erstellung verwendetate APIs, weil sie eine Struktur zur Implementierung von Funktionen bereitstellen können, ohne sich um die tatsächliche Implementierung kümmern zu müssen.
Abstract Klassen sind generischally verwendet, um gemeinsam zu teilen abstract und nicht-abstract Methoden zwischen mehreren Klassen, die die erweitern abstract Klasse, um den Code realistischer zu gestaltensable.
Erfahren Sie mit Hilfe dieser mehr über Java Online-Kurse für Java. Bereiten Sie sich auf ein Vorstellungsgespräch zu Java vor? Hier sind einige Interviewfragen zur objektorientierten Programmierung.