Abstrakte Klasse

Eine abstrakte Klasse ist eine Klasse, die abstrakt deklariert wird-sie kann abstrakte Methoden enthalten oder nicht. Abstrakte Klassen können nicht instanziiert, aber sie können unterklassen werden. Eine abstrakte Klasse kann statische Felder und statische Methoden haben. Wenn eine abstrakte Klasse Unterklasse ist, stellt die Unterklasse normalerweise Implementierungen für alle abstrakten Methoden in ihrer übergeordneten Klasse bereit. Wenn dies jedoch nicht der Fall ist, muss die Unterklasse auch als abstrakt deklariert werden.,

Eine abstrakte Methode ist eine Methode, die ohne Implementierung deklariert wird (ohne geschweifte Klammern und gefolgt von einem Semikolon), wie folgt:

abstract void sum(int a, int b);

Erwägen Sie die Verwendung abstrakter Klassen, wenn eine dieser Anweisungen für Ihre Situation gilt:

  1. Sie möchten Code für mehrere eng verwandte Klassen freigeben.
  2. Sie erwarten, dass Klassen, die Ihre abstrakte Klasse erweitern, viele gängige Methoden oder Felder haben oder andere Zugriffsmodifikatoren als public (z. B. protected und private) benötigen.
  3. Sie möchten nicht statische oder nicht endgültige Felder deklarieren., Auf diese Weise können Sie Methoden definieren, die auf den Status des Objekts zugreifen und diesen ändern können.

Interface

Eine Schnittstelle ist nur die Deklaration von Methoden eines Objekts; es ist nicht die Implementierung. In einer Schnittstelle definieren wir, welche Art von Operation ein Objekt ausführen kann. Diese Operationen werden von den Klassen definiert, die die Schnittstelle implementieren. Schnittstellen bilden einen Vertrag zwischen der Klasse und der Außenwelt, und dieser Vertrag wird zum Zeitpunkt der Erstellung vom Compiler erzwungen.,

Erwägen Sie die Verwendung von Schnittstellen, wenn eine dieser Anweisungen für Ihre Situation gilt:

  1. Sie erwarten, dass nicht verwandte Klassen Ihre Schnittstelle implementieren würden. Beispielsweise werden die Schnittstellen Comparable und Cloneable von vielen unabhängigen Klassen implementiert.
  2. Sie möchten das Verhalten eines bestimmten Datentyps angeben, sich jedoch nicht darum kümmern, wer sein Verhalten implementiert.
  3. Sie möchten mehrere Erbschaften nutzen.,

Ursprünglich veröffentlicht Juni 2016

Weiterlesen

  • Wann (nicht) Java Abstrakte Klassen verwenden
  • Java: Schnittstelle Vs. Abstrakte Klasse
  • So wählen Sie zwischen Schnittstelle und abstrakten Klassen in Java