Abstrakte Klasse in Java und Methoden [mit Beispielen]

Veröffentlicht: 2021-06-18

Der folgende Artikel diskutiert die Eigenschaften der Abstraktion in Java und wie sie durch abstrakte Klassen und abstrakte Methoden erreicht werden könnte. Wir werden die Funktionen abstrakter Klassen und Schnittstellen in Java untersuchen.

Inhaltsverzeichnis

Abstraktion

Eines der wichtigsten Konzepte von Java ist die Abstraktion. Es ist die Eigenschaft, durch die dem Benutzer nur die wichtigen Details eines Programms angezeigt werden. Alle unwesentlichen Teile werden verborgen gehalten. Der Vorgang lässt sich am Beispiel einer E-Mail erläutern. Die Absender senden eine E-Mail, die dem Empfänger zugestellt wird. Die einzige Information, die dem Absender bekannt ist, ist, dass die E-Mail gesendet wurde. Der Hintergrundprozess des Versendens der E-Mail ist für die Benutzer verborgen. Ähnlich ist der Prozess in der objektorientierten Programmierung (OOP), wo dem Benutzer wesentliche Elemente angezeigt werden, während die unwesentlichen Teile ausgeblendet werden. Der Benutzer hat keine Informationen über den Implementierungsprozess, sondern nur die Funktionalität ist bekannt. Dieser Mechanismus ist als Abstraktion bekannt, bei der nur die wesentlichen Eigenschaften eines Objekts gezeigt werden, während die anderen Eigenschaften ignoriert werden.

In Java wird die Abstraktion durch die abstrakten Klassen und Schnittstellen erreicht.

Abstrakte Klasse in Java

Das Schlüsselwort „abstract“ wird in Java für abstrakte Klassen und Methoden verwendet. Die abstrakte Klasse hat das Schlüsselwort abstract in ihrer Deklaration.

Die Syntax einer abstrakten Java-Klasse lautet:

abstrakte Klasse Klassenname

{

public abstract void the_abstractMethod();

öffentlich void the_normalMethod()

{

#Körper der Methode

}

}

Die obige Syntax zeigt, dass sowohl normale als auch abstrakte Methoden in einer abstrakten Klasse enthalten sein können.

Einige Eigenschaften der abstrakten Klassen sind:

  • Abstrakte Methoden können in der abstrakten Java-Klasse vorhanden sein oder auch nicht .
  • Das Vorhandensein mindestens einer abstrakten Methode in einer Klasse macht die Klasse zu einer abstrakten Klasse.
  • Eine abstrakte Klasse kann keine Objekte haben und kann daher nicht direkt instanziiert werden.
  • Eine abstrakte Klasse kann nur verwendet werden, wenn sie von einer anderen Klasse geerbt wird und die abstrakten Methoden implementiert.
  • Korrekte Implementierungen der abstrakten Methoden sind erforderlich, während eine abstrakte Klasse geerbt wird.
  • Sowohl reguläre als auch abstrakte Methoden können in einer abstrakten Java-Klasse vorhanden sein .
  • Parametrisierte Konstruktoren können in einer abstrakten Klasse vorhanden sein. Außerdem enthält eine abstrakte Klasse immer einen Standardkonstruktor.

Abstrakte Methoden

Abstrakte Methoden sind Methodentypen, die keine Implementierung für ihre Deklaration erfordern. Diese Methoden haben keinen Körper, was bedeutet, dass keine Implementierung erfolgt. Einige Eigenschaften einer abstrakten Methode sind:

  • Eine abstrakte Methode in Java wird durch das Schlüsselwort „abstract“ deklariert.
  • Bei der Deklaration der abstrakten Methode muss das Schlüsselwort abstract vor den Namen der Methode gestellt werden.
  • In einer abstrakten Methode gibt es keinen Körper, nur die Signatur der Methode ist vorhanden.
  • Eine abstrakte Methode in Java hat keine geschweiften Klammern, aber am Ende der Methode steht ein Semikolon (;)

abstrakte doppelte Methode (doppeltes n1, doppeltes n2);

  • Jede Klasse, die eine abstrakte Methode enthält, sollte als abstrakte Klasse deklariert werden. Obwohl das Gegenteil möglicherweise nicht der Fall ist, dh es ist nicht erforderlich, dass eine abstrakte Klasse eine abstrakte Methode hat.
  • Die Vererbung einer abstrakten Klasse durch eine reguläre Klasse erfordert die Implementierung aller abstrakten Methoden in der Elternklasse.

Beispiel einer abstrakten Methode

öffentliche abstrakte Klasse Auto

{

privates String-Modell;

private String-Farbe;

privates int Jahr;

public abstract double computePrice();

}

Wenn abgeleitete Klassen die abstrakten Methoden nicht implementieren, würde dies zu abstrakten Klassen führen, die nicht instanziiert werden können.

Einige können nicht mit dem Schlüsselwort abstract in Java verwendet werden.

  • Finale
  • abstrakter Eingeborener
  • abstrakte Statik
  • abstrakt privat
  • abstrakt synchronisiert
  • abstrakt strictfp

Ein Code, der die Verwendung einer abstrakten Methode in Java zeigt, ist unten gezeigt.

Quelle

Die Ausgabe des Codes ist:

Java-Schnittstellen

Abgesehen von den abstrakten Klassen und abstrakten Methoden verwendet Java Schnittstellen, um Abstraktion zu erreichen. Wenn verwandte Methoden zu leeren Körpern zusammengefasst werden, spricht man von einer Schnittstelle. Die Schnittstelle ähnelt einer abstrakten Klasse, da sie die Gruppierung abstrakter Methoden darstellt. Wenn eine Klasse die Schnittstelle implementiert, werden alle abstrakten Methoden innerhalb der Schnittstelle geerbt. Die Schnittstelle kann auch Standardmethoden, Konstanten und statische Methoden enthalten. Es sind nur die Methodenrümpfe der Standard- und der statischen Methode vorhanden. Eine Vererbung und eine Klasse können auf ähnliche Weise geschrieben werden, aber eine Klasse kann die Attribute und das Verhalten eines Objekts beschreiben. Während bei einem Interface nur die Verhaltensweisen eines Objekts vorhanden sind, werden diese von der Klasse implementiert.

Eine Klasse muss alle Methoden der Schnittstelle definieren, die sie implementiert. Nur für eine abstrakte Klasse müssen die Methoden nicht von der Klasse definiert werden.

Eine Schnittstelle ähnelt einer abstrakten Java-Klasse auf folgende Weise:

  • In einem Interface können beliebig viele Methoden enthalten sein.
  • Die Erweiterung .java wird zum Schreiben einer Schnittstelle in eine Datei verwendet. Der Name der Datei sollte mit dem Namen der Schnittstelle übereinstimmen.
  • Die .class-Datei enthält den Bytecode einer Schnittstelle.
  • Schnittstellen erscheinen in Paketen. Die Bytecode-Datei einer Schnittstelle befindet sich in einem Verzeichnis mit demselben Namen wie der Paketname.

Eine Schnittstelle unterscheidet sich in folgenden Punkten von einer abstrakten Java-Klasse :

  • Die Schnittstelle kann nicht instanziiert werden.
  • Es gibt keine Konstruktoren in einer Schnittstelle.
  • Die Schnittstelle enthält nur abstrakte Methoden.
  • In einer Schnittstelle sind keine Instanzfelder vorhanden. Ein Feld muss sowohl als statisch als auch als final deklariert werden, wenn es in einer Schnittstelle erscheinen soll.
  • Nur eine Klasse kann ein Interface implementieren, aber nicht erweitern.
  • Eine Schnittstelle kann mehrere Schnittstellen erweitern.

Lernen Sie Softwarekurse online von den besten Universitäten der Welt. Verdienen Sie Executive PG-Programme, Advanced Certificate-Programme oder Master-Programme, um Ihre Karriere zu beschleunigen.

Eigenschaften einer Schnittstelle

  • Es besteht keine Notwendigkeit, eine Schnittstelle durch das Schlüsselwort abstract als abstrakt zu deklarieren, da sie implizit abstrakt ist.
  • Abstrakte Schlüsselwörter sind nicht erforderlich, um die Methoden als abstrakt zu deklarieren, da sie implizit abstrakt sind.
  • Alle Methoden in einer Schnittstelle sind implizit öffentlich.

Wie deklariert man eine Schnittstelle?

Das Schlüsselwort „interface“ wird verwendet, um eine Schnittstelle zu deklarieren. Die vollständige Abstraktion wird durch die Verwendung einer Schnittstelle bereitgestellt. Standardmäßig sind alle Methoden innerhalb einer Schnittstelle abstrakt und öffentlich. Das bedeutet, dass es keine der Methoden in einer Schnittstelle gibt und alle Felder statisch, öffentlich und endgültig sind.

Syntax einer Schnittstelle:

Schnittstelle Name_der_Schnittstelle {

# Felder deklarieren

# abstrakte Methoden deklarieren

}

Zum Beispiel Schnittstelle Player

{

letztes ganzes Alter = 40;

int kalk();

}

Wie implementiert man eine Schnittstelle?

Um eine Schnittstelle zu implementieren, wird das Schlüsselwort ' implementiert' verwendet. Eine Klasse kann mehr als eine Schnittstelle implementieren. In solchen Fällen folgt auf das Schlüsselwort „ implementiert“ eine durch Komma getrennte Liste von Schnittstellen. Das Schlüsselwort wird in der Klassendeklaration verwendet.

Ein Beispiel für die Implementierung der Schnittstelle ist unten dargestellt:

Klasse Maruti implementiert Auto

Ein Beispiel für einen Code, der die Implementierung einer Schnittstelle in Java zeigt, ist unten gezeigt.

Quelle

Der Code generiert die folgende Ausgabe:

Ein Code, der die Implementierung mehrerer Schnittstellen anwendet, ist unten gezeigt.

Quelle

Der Code generiert die folgende Ausgabe:

Etwas Text…

Ein anderer Text …

Warum wird eine Schnittstelle verwendet?

  • Schnittstellen werden verwendet, um eine vollständige Abstraktion zu erreichen.
  • Mehrfachvererbung in Java kann durch die Verwendung von Vererbung erreicht werden, da Java keine Mehrfachvererbung unterstützt.
  • Eine lose Kopplung kann durch die Verwendung einer Schnittstelle erreicht werden.
  • Durch die Verwendung von Implementierungsabstraktion in Java kann erreicht werden.

Obwohl die Abstraktion in Java durch die abstrakte Java-Klasse erreicht werden kann, werden Schnittstellen verwendet, da sie endgültige, öffentliche und statische Variablen enthalten. Nicht-finale Variablen können jedoch in einer abstrakten Klasse vorhanden sein.

Wenn sowohl die Java-Schnittstelle als auch die abstrakte Java-Klasse verwendet werden, um Abstraktion zu erreichen, wann sollten eine Schnittstelle und eine abstrakte Klasse verwendet werden?

  • Eine abstrakte Klasse wird verwendet, wenn der Benutzer eine Vorlage für eine Gruppe von Unterklassen definieren muss.
  • Eine Schnittstelle wird verwendet, wenn ein Benutzer eine Rolle für andere Klassen definieren muss.

Einige Vorteile der Abstraktion sind:

  • Die Komplexität des Programms wird reduziert.
  • Es besteht eine geringere Wahrscheinlichkeit einer Codeduplizierung, wodurch die Wiederverwendbarkeit erhöht wird.
  • Die Sicherheit eines Programms wird durch die Verwendung von Abstraktion erhöht, da dem Benutzer nur wenige Details zur Verfügung gestellt werden.

Fazit

In dem Artikel wurde das detaillierte Konzept der Abstraktion in Java erörtert, bei dem es sich um eine Technik handelt, mit der nicht wesentliche Informationen vor dem Benutzer verborgen werden. In Java wird Abstraktion durch abstrakte Klassen und Schnittstellen erreicht. Eine 100%-Abstraktion wird von den Schnittstellen bereitgestellt, während eine teilweise Abstraktion von den abstrakten Klassen bereitgestellt wird. Der Artikel erwähnte ferner, wann eine Schnittstelle verwendet werden sollte und wann eine abstrakte Klasse verwendet werden sollte. Es listete auch die Ähnlichkeiten einer Schnittstelle mit der abstrakten Java-Klasse sowie die Unterschiede auf. Ohne die erforderliche Kenntnis beider Konzepte führt dies zu einem Code voller Fehler.

Wenn Sie weiter daran interessiert sind, mehr zu erfahren und die Konzepte in realen Problemen umzusetzen, können Sie sich den Masters in Computer Science -Kurs ansehen, der von upGrad und IIIT-Bangalore angeboten und von der Liverpool John Moores University anerkannt wird. Der Kurs richtet sich an Berufseinsteiger (21-45 Jahre) und bietet mehr als 500 Schulungsstunden von führenden Branchenexperten und Fakultäten für Softwareentwicklung. Weitere Details zum Kurs können auf der offiziellen Webseite von upGrad eingesehen werden.

Bilden Sie sich weiter und machen Sie sich bereit für die Zukunft

Bewerben Sie sich für das Executive PG-Programm in Softwareentwicklung vom IIIT-B