Heim  >  Artikel  >  Java  >  Abstrakte Klasse in Java

Abstrakte Klasse in Java

PHPz
PHPzOriginal
2024-08-30 15:59:08755Durchsuche

Der folgende Artikel enthält eine Übersicht über die abstrakte Klasse in Java. Abstrakte Klassen sind wie alle anderen normalen Klassen in Java. Der wesentliche Unterschied zwischen abstrakten und regulären Klassen besteht darin, dass wir beim Erstellen der abstrakten Klasse das Schlüsselwort „ABSTRACT“ verwenden müssen. Es handelt sich um eine Trennung der Klassenimplementierung. Sie definierten die sehr gemeinsamen Merkmale seiner Unterklassen. Eine solche Art von Klasse wird als abstrakte Klasse bezeichnet. Am wichtigsten ist, dass wir kein Objekt einer abstrakten Klasse erstellen können.

Starten Sie Ihren kostenlosen Softwareentwicklungskurs

Webentwicklung, Programmiersprachen, Softwaretests und andere

Abstrakte Klassen können sowohl abstrakte als auch nicht abstrakte Methoden enthalten. Sie dürfen jedoch keinen Hauptteil der abstrakten Methode enthalten, die nur von der Unterklasse bereitgestellt werden kann. Wenn die Unterklasse die abstrakte Methode nicht implementiert, müssen wir sie explizit ABSTRACT machen. Mit anderen Worten: Wenn eine Klasse eine abstrakte Methode enthält, muss sie sich selbst als ABSTRACT definieren. Mithilfe abstrakter Klassen können wir mehrere Java-Klassen gruppieren, den Code optimieren, ihn lesbarer machen und Redundanzen reduzieren. Es bietet auch eine Vorlage für zukünftige Kurse.

Syntax der abstrakten Klasse in Java

Die Syntax der abstrakten Klasse lautet wie folgt:

Abstrakte Klasse in Java

Wie funktioniert die abstrakte Klasse in Java?

  • Eine abstrakte Klasse hat eine abstrakte Methode und eine nicht-abstrakte Methode, d. h. eine abstrakte Methode ohne Körper, und sie können Methoden mit Implementierung haben.
  • Eine abstrakte Klasse wird verwendet, um die häufigste Funktion bereitzustellen, die für verschiedene Klassen spezifisch ist. Unterklassen können diese abstrakten Methoden je nach Bedarf oder Anforderung unterschiedlich implementieren.
  • Wir können kein Objekt einer abstrakten Klasse mit dem „new“-Operator erstellen, aber wir können dennoch seinen Konstruktor definieren, der nur im Konstruktor seiner Unterklasse aufgerufen werden kann. Ein Unterklassenkonstruktor kann auf einen Oberklassenkonstruktor zugreifen, um seine Variable zu initialisieren, die in der Unterklasse für weitere Anforderungen verwendet werden kann.

Beispiele für abstrakte Klassen in Java

Die folgenden Beispiele sind unten aufgeführt:

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:

Abstrakte Klasse in Java

Im obigen Beispiel ist HUMAN eine abstrakte Klasse, die die allgemeinen 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 ihm gefällt. Das gilt nur für sie.

Der Hauptvorteil der abstrakten Klasse besteht darin, dass wir eine spezifische Implementierung von Methoden entsprechend einer Anforderung haben, wodurch Redundanz reduziert, die Lesbarkeit des Codes erhöht, die Implementierung von Methoden ausgeblendet und eine teilweise Abstraktion bereitgestellt wird.

Wir können noch ein Beispiel haben, um zu verstehen, wann abstrakte Klassen verwendet werden sollten.

  • Wir sollten abstrakte Klassen verwenden, um gemeinsame Funktionen mit verschiedenen Klassen mit spezifischen Implementierungen zu teilen.
  • In abstrakten Klassen sollten Felder nicht statisch und endgültig sein; Wir können auch konkrete, private, öffentliche und geschützte Methoden haben.

Nehmen wir an, wir haben eine Tierklasse. Wir haben verschiedene Tiere auf der Erde, und sie alle unterscheiden sich in einigen oder wesentlichen Punkten voneinander. Dennoch wird es alle gemeinsamen Merkmale von allen enthalten.

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

Alle Tiere haben unterschiedliche Arten von Geräuschen, Gewohnheiten usw. Beispielsweise 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 spezifische Implementierung bereitstellen können.

In der übergeordneten Klasse, also Animal, haben wir eine generische abstrakte Methode namens Sound(). Daher muss jede untergeordnete Klasse diese Methode überschreiben und ihre spezifische Implementierung bereitstellen.

Abstrakte Klasse und Schnittstelle

Im Folgenden sind die Unterschiede zwischen abstrakter Klasse und Schnittstelle aufgeführt:

  • Abstrakte Klasse und Schnittstelle werden beide verwendet, um eine Abstraktion in Java zu erreichen. Eine abstrakte Klasse bietet jedoch teilweise Abstraktion, während eine Schnittstelle 100 % oder vollständige Abstraktion bereitstellt.
  • Standardmäßig sind Variablen in einer Schnittstelle endgültig. Aber die abstrakte Klasse enthält auch eine nicht endgültige Variable. Ebenso kann eine abstrakte Klasse auch eine statische, nicht statische Variable haben. Die Schnittstelle enthält jedoch nur eine endgültige und statische Variable.
  • Mitgliedsvariablen einer abstrakten Klasse können privat, öffentlich und geschützt sein, aber sie sind in der Schnittstelle standardmäßig öffentlich.
  • Eine abstrakte Klasse kann eine andere Java-Klasse erweitern und mehrere Schnittstellen implementieren, aber eine Schnittstelle kann nur eine andere Schnittstelle erweitern. Ebenso kann eine abstrakte Klasse eine Implementierung einer Schnittstelle bereitstellen, eine Schnittstelle kann dies jedoch nicht.
  • Wir verwenden „implementiert“ und „extend“-Schlüsselwörter, um Schnittstellen und Klassen zu implementieren und zu erweitern.
  • Mit der Methode können wir die nicht-statischen und nicht-finalen Variablen einer abstrakten Klasse ändern oder darauf zugreifen.

Fazit

Eine abstrakte Klasse wird verwendet, um eine teilweise Abstraktion bereitzustellen. Eine abstrakte Klasse kann nicht mit dem Schlüsselwort NEW instanziiert werden. Eine abstrakte Methode hat keinen Körper und endet immer mit einem Semikolon (;). Die abstrakte Klasse enthält abstrakte und nicht abstrakte Methoden. Die Unterklasse einer abstrakten Oberklasse muss alle abstrakten Methoden implementieren. Wenn dies nicht der Fall ist, muss es 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. Außerdem ist die abstrakte Methode nicht statisch. Daher verfügen abstrakte Klassen auch über abstrakte und konkrete Methoden und können daher keine 100-prozentige Abstraktion bieten. Dabei handelt es sich um einen Prozess, bei dem die komplexe Logik vor dem Endbenutzer verborgen und ihm nur die Dienste angezeigt werden.

Andererseits kann eine Unterklasse abstrakt sein, auch wenn ihre Oberklasse konkret ist, und kann auch als Datentyp verwendet werden. Eine abstrakte Klasse kann statische Felder und statische Methoden haben. Sie können diese statischen Mitglieder mit einer Klassenreferenz verwenden.

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

Stellungnahme:
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