Einfachste Erklärung der abstrakten Klasse und Schnittstelle

Dies ist vielleicht die am häufigsten gestellte Frage in Interviews im Zusammenhang mit Softwareentwicklung oder Softwarequalitätssicherung. Ich habe aus meiner Erfahrung gesehen, dass viele von uns oft verwirrt sind oder die Definition und Verwendung abstrakter Klassen und Schnittstellen vergessen. Also, ich möchte es am einfachsten machen, damit niemand jemals wieder Probleme damit hat.

Abstrakte Klasse und Schnittstellen sind zwei sehr wichtige Drehpunkte im objektorientierten Programmierkonzept.,

Zuerst werde ich die abstrakte Klasse und ihre Verwendung erklären, und später werden wir in Schnittstellen übergehen.

Abstrakte Klasse ist nichts Besonderes, wenn Sie mit einer regulären Klasse unterscheiden möchten. Aber es hat einige Methoden, die nicht implementiert oder nur deklariert, nicht definiert sind. In diesem Fall werden alle diese Methoden und die Klasse selbst mit dem Schlüsselwort „abstract“ umbenannt.

Eine abstrakte Klasse kann eine oder mehrere nicht implementierte Methoden haben.,

Da eine abstrakte Klasse nicht richtig ist oder im Vergleich zu einer regulären Klasse keine ideal definierten Methoden hat, können abstrakte Klassen nicht instanziiert werden, dh wir können keine direkten Objekte abstrakter Klassen erstellen.

Die Klassen, die diese abstrakte Klasse erben/erweitern, müssen alle abstrakten Methoden der übergeordneten abstrakten Klasse implementieren/definieren.

Wenn eine Klasse keine der abstrakten Methoden definiert, wird diese Klasse auch zu einer abstrakten Klasse.,

Verwendung (Eine imaginäre Fallstudie):

Nehmen wir an, Sie haben 1995 eine Autoklasse entworfen, die eine zusätzliche Funktion hatte-sie könnte fliegen. Sie haben die Car-Klasse sehr schön entworfen, alle Ihre Methoden waren sehr standard und effizient, aber damals wussten Sie, dass es ziemlich unmöglich war, die carFlying () – Methode zu implementieren. Sie haben also die Methode carFlying() leer oder nicht implementiert gehalten (jetzt wissen Sie, dass dies sowohl eine abstrakte Methode als auch eine Klasse ist!).,

Heute möchte ich das fliegende Auto implementieren, das Sie bereits entworfen haben und die Technologie ist nicht mehr unmöglich. Das Auto, das ich bauen werde, hat alle Eigenschaften, die Ihrem Auto ähnlich sind, und zusätzlich kann es fliegen. Was ich also tun kann, ist, dass ich einfach Ihre abstrakte Klasse erben („extends“-für Java) kann und diese abstrakte Methode carFlying() definieren/implementieren muss. hier gehts! unser fliegendes Auto ist bereit zu rollen.

Wenn wir also einige gemeinsame Merkmale oder Verhaltensweisen zwischen verschiedenen Objekten haben, können wir eine allgemeine abstrakte Klasse mit dieser Funktion als implementierter Methode erstellen., Aber diese Objekte können unterschiedliche Verhaltensweisen haben, in diesem Fall werden wir eine abstrakte Methode deklarieren und diese abstrakten Methoden je nach Bedarf des Objekts unterschiedlich implementieren.

Beispiel für abstrakte Klasse:

Betrachten wir noch einmal ein Beispiel, ein Haufen Wrestler bekommt den gleichen Geldbetrag pro Stunde zum Spielen. aber sie haben unterschiedliche Themen Musik und Finishing Kampfstrategie. So können wir die Zahlungsmethode für alle gleich halten und sie in einer Klasse namens Wrestler implementieren lassen., deklarieren wir die Methoden themeMusic() und finisher () als abstrakt, da diese beiden für verschiedene Objekte in einigen anderen Klassen, die unsere abstrakte Wrestler-Klasse erben, unterschiedlich implementiert werden müssen.

und die wichtigsten.java:

Schnittstelle:

Wenn Sie den oberen Teil dieses Tutorials richtig durchlaufen haben, wird das Verständnis der Schnittstelle für Sie sehr einfacher.

Schnittstelle ist keine Klasse, es ist nur Schnittstelle. Es hat einige Methoden ohne Körper darin, nur die Methodensignatur (sie sind im Grunde abstrakte Methoden!,), und kann einige endgültige und statische Variablen haben. Und eine typische Klasse „implementiert“ Schnittstellen, nicht „erweitert“.

Es können mehrere Schnittstellen gleichzeitig implementiert (allgemein vererbt) werden.

Die Klassen, die die Schnittstellen erben/implementieren, müssen alle abstrakten Methoden der Schnittstelle definieren.

Methoden innerhalb von Schnittstellen sind standardmäßig öffentlich, void und abstrakt.

Schnittstelle ist eine Art Mehrfachvererbung in Java-Programmiersprache.

Wir können Schnittstellen nicht wie abstrakte Klassen instanziieren., Weil sie unvollständig sind und nicht realisiert werden dürfen. Manchmal kann jedoch eine Aktivität wie das Instanziieren mithilfe der anonymen inneren Klasse darauf angewendet werden. Das ist heute nicht unsere Agenda.

Verwendung von Interface:

Schnittstellen sparen Kodierung Zeit. Es kann einige statische und endgültige Variablen enthalten, auf die global zugegriffen werden kann. und einige Methoden, die für jeden, der die Schnittstelle implementiert, abstrakt und jederzeit für die weitere Verwendung verfügbar sind.,

Beispiel der Schnittstelle:

Im obigen Beispiel der abstrakten Klasse haben wir gesehen, dass eine Methode für alle gleich war, die einen Körper in der abstrakten Klasse hatten und andere Methoden abstrakt waren. aber für Schnittstellen sind alle Methoden jetzt nur Signatur. Die Klasse StoneCold implementiert Wrestler Interface und definiert alle drei abstrakten Methoden entsprechend ihrem Bedarf.

Dieses Mal erhalten verschiedene Wrestler unterschiedliche Menge an Geld pro Stunde. Es ist also am bequemsten, dieselbe Methode wie abstrakt zu verwenden und sie an anderer Stelle entsprechend dem Bedarf des Objekts zu definieren.,

public interface Wrestler {
public abstract void paymentForWork (int hours);
public abstract void themeMusic();
public abstract void finisher();
}

und die folgende Klasse implementiert die Ringer-Schnittstelle.

Für den Main.java:

Bei der Objektinitiierung bei abstrakter Klasse oder Schnittstelle können Sie Folgendes beachten:

A obj= new B();
//where A is an interface/abstract class. B is the concrete(implements/extends "A”)class which gives it’s memory to A’s obj to have access into B class and utilize its defined methods.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.