[JAVA] Richtige Verwendung der Schnittstelle und der abstrakten Klasse

Wie verwende ich die Schnittstelle und die abstrakte Klasse richtig?

Das nächste, was sich ein Anfänger fragt, nachdem er verstanden hat, wie eine Schnittstelle und eine abstrakte Klasse aussehen __ Wie sollte jeder richtig verwendet werden? __ __ Ich denke das ist der Fall.

Schnittstellen für Benutzer, abstrakte Klassen für Implementierer

Kurz gesagt, das war's.

Speziell

Implementieren Sie eine Schnittstelle für Klassen, die mit Polymorphismus aufgerufen werden sollen.

Der Benutzer sollte keine Variablen vom abstrakten Klassentyp deklarieren. Deklarieren wir Variablen mit dem Schnittstellentyp.

AbstractFooBar = new FooBar(); // NG
IFooBar = new FooBar(); // OK

Sie sollten auch keine Methoden definieren, die abstrakte Klassen als formale Argumenttypen verwenden. Geben Sie den Schnittstellentyp an.

void fooMethod(AbstractFooBar fooBar); // NG
void fooMethod(IFooBar fooBar); // OK

Ergänzung Was ist, wenn Sie Polymorphismus in einer abstrakten Klasse anwenden möchten?

Was ist, wenn Sie Polymorphismus für die untergeordneten Klassen einer abstrakten Klasse verwenden möchten? Weil sich die Frage zu stellen scheint. In diesem Fall sieht es wie folgt aus.

抽象クラス-インタフェース.png

Auf diese Weise sollte der Benutzer immer über die IFooBar-Schnittstelle anrufen und Für diejenigen, die die IFooBar-Schnittstelle implementieren, Sie können AbstractFooBar erweitern oder IFooBar direkt implementieren. Jeder wird glücklich sein.

Recommended Posts

Richtige Verwendung der Schnittstelle und der abstrakten Klasse
Verwendung von Abstract Class und Interface in Java richtig
abstrakt (abstrakte Klasse) und Schnittstelle (Schnittstelle)
Unterschied zwischen Schnittstelle und abstrakter Klasse
Verwenden Sie redirect_to und rendern Sie richtig
Ordnungsgemäße Verwendung von Mockito und PowerMock
Schnittstelle und Zusammenfassung
Verwendung der Datumsklasse
Schnittstelle / Abstrakte Klasse / Überschreiben
Kriterien für die ordnungsgemäße Verwendung von render und redirect_to
Beispiel für die Verwendung einer abstrakten Klasse
Zusammenfassung der "abstrakten Schnittstellenunterschiede"
[JAVA] Unterschied zwischen Abstract und Interface
[Java / Swift] Vergleich von Java-Schnittstelle und Swift-Protokoll
[Java] Inhalt der Collection-Schnittstelle und der List-Schnittstelle
(In 1 Minute bestimmen) Wie verwende ich leer ?, Leer? Und präsent?
Java Basic Learning Content 6 (Vererbung / Abstrakte Klasse / Schnittstelle)
Klasse und Modell
[Java] Verwendung der FileReader-Klasse und der BufferedReader-Klasse
Java (abstrakte Klasse)
Informationen zu next () und nextLine () der Scannerklasse
[Java] Abstrakte Klasse
Verwenden Sie doch die for-Anweisung? Verwenden Sie die while-Anweisung? Ordnungsgemäße Verwendung von for-Anweisung und while-Anweisung
Vererbung und Schnittstelle.
Ich möchte rekursiv die Oberklasse und die Schnittstelle einer bestimmten Klasse erhalten
[Java] Verwendung der Kalenderklasse und der Datumsklasse
Verwendung japanischer Schriftarten und Fremdzeichen in Jasper Report
Bis zur Verwendung von Spring Data und JPA Part 2
[JAVA] Was ist der Unterschied zwischen Schnittstelle und Zusammenfassung? ?? ??
Verwenden Sie Variablen für Klassennamen und ID-Namen in haml
[Ruby] Klassenverschachtelung, Vererbung und die Grundlagen des Selbst
[Java] Umgang mit Zeichenketten (String-Klasse und StringBuilder-Klasse)
Verwendung und Anwendung der JFrame / Canvas-Klasse von Java
Umgang mit Datum und Uhrzeit in Ruby. Verwenden Sie Datum und Uhrzeit richtig.
Klasse und Sofortteil2
Über die abstrakte Klasse von Java
[Java] Struktur der Auflistungsklasse festlegen (zu HashSet und TreeSet)
Implementieren Sie die Java-Schnittstelle in der JRuby-Klasse und rufen Sie sie von Java aus auf
[Java] Ich habe über die Vorzüge und Verwendungen von "Schnittstelle" nachgedacht.