Was ist Abstract Class in Java?

  • Abstrakte Klassen sind wie alle anderen normalen Klassen in Java. Der Hauptunterschied zwischen abstrakter Klasse und normaler Klasse besteht darin, die abstrakte Klasse zu erstellen, die für die Verwendung des Schlüsselworts 'ABSTARCT' erforderlich ist. Es ist eine Trennung der Klassenimplementierung.
  • Sie verwendeten, um die sehr allgemeinen Eigenschaften seiner Unterklassen zu definieren. Diese Art von Klasse wird als abstrakte Klasse bezeichnet.
  • Am wichtigsten ist, dass wir kein Objekt einer abstrakten Klasse erstellen können.
  • Abstrakte Klassen können sowohl abstrakte als auch nicht abstrakte Methoden enthalten. Sie können keinen Rumpf der abstrakten Methode enthalten, der nur von der Unterklasse bereitgestellt werden kann. Wenn die Unterklasse die Implementierung der abstrakten Methode nicht bereitstellt, müssen wir sie explizit ABSTRACT machen.
  • Mit anderen Worten, wenn eine Klasse eine abstrakte Methode enthält, muss sie sich selbst als ABSTARCT definieren.
  • Durch die Verwendung von abstrakten Klassen können wir mehrere Java-Klassen zusammenfassen. Dadurch wird auch der Code optimiert und der Code besser lesbar und die Redundanz verringert. Es bietet auch eine Vorlage für zukünftige Klassen.

Syntax der abstrakten Klasse in Java

Wie funktioniert Abstract Class in Java?

  • Eine abstrakte Klasse hat eine abstrakte Methode und eine nicht abstrakte Methode, dh eine abstrakte Methode ohne Textkörper, und sie können auch Methoden mit Implementierung haben.
  • Eine abstrakte Klasse wird verwendet, um das allgemeinste Merkmal bereitzustellen, das für verschiedene Klassen spezifisch ist. Unterklassen können eine unterschiedliche Implementierung dieser abstrakten Methoden entsprechend ihren Bedürfnissen oder Anforderungen bereitstellen.
  • Wir können ein Objekt einer abstrakten Klasse nicht mit dem Operator 'new' erstellen, aber wir können seinen Konstruktor definieren, der nur im Konstruktor seiner Unterklasse aufgerufen werden kann. Der Unterklassenkonstruktor kann auf einen Superklassenkonstruktor zugreifen, um seine Variable zu initialisieren, die möglicherweise für weitere Anforderungen in der Unterklasse verwendet wird.

Beispiele für Abstract Class in Java

Human.java

package com.cont.article;
public abstract class Human
(
public abstract void whatTheylike();
public void doTheysleep()
(
System. out .println("Yes every human require sleep.");
)
)

Human1.java

package com.cont.article;
public class Human1 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have icecream.");
)
)

Human2.java

package com.cont.article;
public class Human2 extends Human
(
@Override
public void whatTheylike()
(
System. out .println("we like to have coffee.");
)
)

TestHuman.java

package com.cont.article;
public class TestHuman
(
public static void main(String() args)
(
Human human1 = new Human1();
human1.whatTheylike();
Human human2 = new Human2();
human2.whatTheylike();
human1.doTheysleep();
human2.doTheysleep();
)
)

Ausgabe:

Im obigen Beispiel haben wir MENSCH als abstrakte Klasse, die die gemeinsamen Bedürfnisse, Vorlieben und Abneigungen eines Menschen definiert. Es gibt verschiedene Arten von Menschen mit unterschiedlichen Vorlieben und Abneigungen. So kann jeder Mensch eine spezifische Umsetzung dessen liefern, was er möchte. Das wird nur für sie spezifisch sein.

Der Hauptvorteil der abstrakten Klasse besteht darin, dass wir eine spezifische Implementierung von Methoden gemäß einer Anforderung haben, die auch zu einer Verringerung der Redundanz führt, die Lesbarkeit von Code erhöht, die Implementierung von Methoden verbirgt und daher eine teilweise Abstraktion bereitstellt.

Wir können ein weiteres Beispiel haben, um zu verstehen, wann wir abstrakte Klassen verwenden sollten.

  • Wir sollten die abstrakte Klasse verwenden, wenn wir die gemeinsame Funktionalität zwischen verschiedenen Klassen mit einer bestimmten Implementierung teilen möchten.
  • In abstrakten Klassen sollten Felder nicht statisch und endgültig sein, wir können auch konkrete Methoden als privat, öffentlich und geschützt definieren.

Angenommen, wir haben eine Tierklasse. Es gibt verschiedene Tierarten auf der Erde, und alle unterscheiden sich in gewissem oder größerem Sinne voneinander. Es enthält alle gemeinsamen Funktionen von allen.

Diese Animal-Klasse kann nicht für jedes Tier spezifische Methoden enthalten. Durch das Konzept der Abstract-Klasse können wir diese Funktionalität ohne redundanten Code implementieren.

Alle Tiere haben unterschiedliche Geräusche, Gewohnheiten usw. Zum Beispiel haben Hunde, Katzen, Elefanten und Snacks unterschiedliche Geräusche. Zu diesem Zweck können wir eine generische Methode in der übergeordneten Klasse haben, über die alle anderen Unterklassen oder untergeordneten Klassen ihre eigene spezifische Implementierung bereitstellen können.

In der Elternklasse, dh Animal, haben wir eine allgemeine abstrakte Methode namens Sound (). Daher muss jede untergeordnete Klasse diese Methode überschreiben und ihre eigene spezifische Implementierung bereitstellen.

Abstrakte Klasse und Schnittstelle?

  • Abstrakte Klasse und Schnittstelle werden beide verwendet, um eine Abstraktion in Java zu erzielen. Eine abstrakte Klasse bietet eine teilweise Abstraktion, während die Schnittstelle eine 100% ige oder vollständige Abstraktion bietet.
  • Standardmäßig sind Variablen in einer Schnittstelle final. Die abstrakte Klasse enthält jedoch auch eine nicht endgültige Variable. Ebenso kann eine abstrakte Klasse auch eine statische, nicht statische Variable haben. Interface enthält jedoch nur eine endgültige und statische Variable.
  • Mitgliedsvariablen einer abstrakten Klasse können wie private, public oder protected sein, sind jedoch im Falle der Schnittstelle standardmäßig public.
  • Eine abstrakte Klasse kann eine andere Java-Klasse erweitern und mehrere Schnittstellen implementieren, eine Schnittstelle kann jedoch nur eine andere Schnittstelle erweitern. Eine abstrakte Klasse kann eine Implementierung einer Schnittstelle bereitstellen, eine Schnittstelle jedoch nicht.
  • Wir verwenden das Schlüsselwort implements und extend, um das Interface bzw. die Klassen zu implementieren und zu erweitern.
  • Über die Methode können wir die nicht statischen und nicht endgültigen Variablen einer abstrakten Klasse ändern oder darauf zugreifen.

Fazit

  • Abstrakte Klasse zur partiellen Abstraktion. Eine abstrakte Klasse kann nicht mit dem Schlüsselwort NEW instanziiert werden.
  • Eine Abstract-Methode hat keinen Body und endet immer mit einem Semikolon (;).
  • Die abstrakte Klasse enthält abstrakte und nicht abstrakte Methoden.
  • Eine Unterklasse einer abstrakten Superklasse muss eine Implementierung aller abstrakten Methoden bereitstellen. Wenn dies nicht der Fall ist, muss sie sich selbst als abstrakte Klasse deklarieren.
  • Eine Unterklasse kann abstrakt sein, auch wenn die Oberklasse konkret ist.
  • Eine nicht abstrakte Klasse kann keine abstrakten Methoden enthalten. Die abstrakte Methode ist auch nicht statisch.
  • Daher können wir sagen, dass abstrakte Klassen auch abstrakte und konkrete Methoden enthalten, sodass sie keine 100% ige Abstraktion liefern können. Es ist ein Prozess, bei dem die komplexe Logik vor dem Endbenutzer verborgen wird und nur die Dienste angezeigt werden. Eine Unterklasse kann abstrakt sein, auch wenn ihre Oberklasse konkret ist, und sie kann auch als Datentyp verwendet werden.
  • Eine abstrakte Klasse kann statische Felder und statische Methoden haben. Sie können diese statischen Member mit einer Klassenreferenz verwenden.

Empfohlene Artikel

Dies ist eine Anleitung zu Abstract Class in Java. Hier diskutieren wir Syntax und Beispiele für abstrakte Klassen in Java zusammen mit abstrakten Klassen und Interfaces. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -

  1. Java-Schnittstelle gegen abstrakte Klasse
  2. BoxLayout in Java
  3. Was ist Java SE?
  4. Was ist Java-Vererbung?
  5. Wie funktioniert Abstract Class in PHP?
  6. Abstrakte Klasse in C ++
  7. Anleitung zur statischen Methode in PHP
  8. Komplette Übersicht über die statische JavaScript-Methode