Heim  >  Artikel  >  Java  >  Welche Rolle spielen abstrakte Klassen?

Welche Rolle spielen abstrakte Klassen?

青灯夜游
青灯夜游Original
2020-11-17 15:51:5629122Durchsuche

Abstrakte Klassen werden verwendet, um die gemeinsamen Merkmale von Unterklassen zu erfassen und um Vorlagen für Unterklassen in der Vererbungshierarchie zu erstellen. In Wirklichkeit besteht keine Notwendigkeit, einige Methoden in der übergeordneten Klasse zu schreiben, da die Methoden in jeder Unterklasse definitiv unterschiedlich sind. Schreiben Sie sie stattdessen als abstrakte Klasse, damit Sie das wissen, wenn Sie sich den Code ansehen Dies ist eine abstrakte Methode, und Sie werden wissen, dass diese Methode in der Unterklasse implementiert ist und daher einen sofortigen Effekt hat.

Welche Rolle spielen abstrakte Klassen?

1. Was ist eine abstrakte Klasse

Im objektorientierten Konzept werden alle Objekte durch Klassen dargestellt, aber umgekehrt werden nicht alle Klassen zur Beschreibung von Objekten verwendet, wenn eine Klasse dies tut Da sie nicht genügend Informationen enthalten, um ein bestimmtes Objekt zu beschreiben, handelt es sich bei einer solchen Klasse um eine abstrakte Klasse.

Abgesehen davon, dass abstrakte Klassen keine Objekte instanziieren können, können auf andere Funktionen der Klasse weiterhin auf die gleiche Weise wie auf normale Klassen zugegriffen werden.

Da abstrakte Klassen keine Objekte instanziieren können, müssen abstrakte Klassen geerbt werden, bevor sie verwendet werden können. Aus diesem Grund wird normalerweise während der Entwurfsphase entschieden, ob eine abstrakte Klasse entworfen werden soll.

Die übergeordnete Klasse enthält allgemeine Methoden für die Sammlung untergeordneter Klassen. Da die übergeordnete Klasse selbst jedoch abstrakt ist, können diese Methoden nicht verwendet werden.

In Java stellen abstrakte Klassen eine Vererbungsbeziehung dar. Eine Klasse kann nur eine abstrakte Klasse erben, aber eine Klasse kann mehrere Schnittstellen implementieren.

2. Warum abstrakte Klassen verwenden? Wozu dienen abstrakte Klassen?

Ich frage mich immer, warum wir auf abstrakte Klassen verweisen müssen. Reichen gewöhnliche Klassen nicht aus? In allgemeinen Klassen definierte Methoden können auch von Unterklassen überschrieben werden. Es ist nicht erforderlich, sie als abstrakt zu definieren.

Tatsächlich ist es nicht so, dass abstrakte Klassen tatsächlich die Anwendungsanforderungen erfüllen können. In Wirklichkeit gibt es jedoch tatsächlich einige Methoden in übergeordneten Klassen, die nicht geschrieben werden müssen, da dies auf jeden Fall der Fall ist unterschiedlich sein, daher besteht keine Notwendigkeit, es in die übergeordnete Klasse zu schreiben. Natürlich können Sie alle abstrakten Klassen auch als nicht-abstrakte Klassen schreiben, dies ist jedoch nicht notwendig.

Schreiben Sie es als abstrakte Klasse, damit Sie, wenn andere Ihren Code sehen oder Sie den Code anderer Leute sehen, auf die abstrakte Methode achten und wissen, dass diese Methode in einer Unterklasse implementiert ist, sodass sie eine auffordernde Wirkung hat.

3. Der Unterschied zwischen abstrakten Klassen und Schnittstellen

Abstrakte Klassen

Abstrakte Klassen werden verwendet, um die gemeinsamen Merkmale von Unterklassen zu erfassen. Sie kann nicht instanziiert werden und kann nur als Oberklasse für Unterklassen verwendet werden. Abstrakte Klassen sind Vorlagen, die zum Erstellen von Unterklassen in der Vererbungshierarchie verwendet werden.

Schnittstelle

Eine Schnittstelle ist eine Sammlung abstrakter Methoden. Wenn eine Klasse eine Schnittstelle implementiert, erbt sie die abstrakten Methoden dieser Schnittstelle. Dies ähnelt dem Vertragsmuster. Wenn Sie diese Schnittstelle implementieren, müssen Sie sicherstellen, dass diese Methoden verwendet werden. Eine Schnittstelle ist nur ein Formular, sie kann selbst nichts tun.

Vergleich abstrakter Klassen und Schnittstellen

Welche Rolle spielen abstrakte Klassen?

Wann abstrakte Klassen und Schnittstellen verwendet werden sollten

  • Wenn Sie einige Methoden haben und möchten, dass einige davon eine Standardimplementierung haben, verwenden Sie abstrakte Klassen.
  • Wenn Sie Mehrfachvererbung implementieren möchten, müssen Sie Schnittstellen verwenden. Da Java keine Mehrfachvererbung unterstützt, können Unterklassen nicht mehrere Klassen erben, aber sie können mehrere Schnittstellen implementieren. Sie können also Schnittstellen verwenden, um das Problem zu lösen.
  • Wenn sich die Grundfunktionalität ständig ändert, müssen Sie abstrakte Klassen verwenden. Wenn Sie die Grundfunktionalität ständig ändern und eine Schnittstelle verwenden, müssen Sie alle Klassen ändern, die die Schnittstelle implementieren.
  • Angenommen, es gibt eine Schnittstelle und fünf Implementierungsklassen. Die aktuelle Anforderung besteht möglicherweise darin, der Schnittstelle eine Methode hinzuzufügen, die Änderungen an den fünf Implementierungsklassen erfordert Sie können eine abstrakte Klasse definieren, diese Methode in der abstrakten Klasse hinzufügen und dann die anderen beiden Implementierungsklassen diese abstrakte Klasse implementieren oder die neuen Funktionen in Java 8 verwenden, um Standardmethoden oder statische Methoden in der Schnittstelle hinzuzufügen.

Weitere Kenntnisse zum Thema Programmierung finden Sie unter: Programmieren lernen! !

Das obige ist der detaillierte Inhalt vonWelche Rolle spielen abstrakte Klassen?. 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