[JAVA] Erweiterte Vererbung

Die Idee des Abstrakten

Wenn Sie beispielsweise eine Klasse mit dem Namen "Sportler" / "Leser" aus einer Klasse mit dem Namen "Mensch" (Essen, Gehen, Schlafen) erstellen, wird jede Klasse "Sportler" / "Leser" von der menschlichen Klasse geerbt. Die Menge an (essen, schlafen) ist unterschiedlich. (Sportler essen mehr als Leser, und die Leser bleiben lange auf, damit sie weniger schlafen als Sportler, die müde sind und gut schlafen.) In diesem Fall kann die menschliche Klasse die Details über (Essen, Schlafen) nicht definieren. Menschen tun dies jedoch immer (essen, gehen, schlafen), unabhängig davon, ob sie "Sportler" oder "Leser" sind. Aus objektorientierter Sicht muss das, was Sie in einer menschlichen Klasse tun, in der menschlichen Klasse beschrieben werden. Funktion dafür.

So definieren Sie eine mehrdeutige Methode ①

Im obigen Beispiel ist (essen, schlafen) eine Methode, deren Details nicht definiert werden können. Sie kann daher als unvollständige Methode definiert werden, indem beim Erstellen der Methode "abstract" hinzugefügt wird.

//Methodendefinition
Zugriffsmodifikator Zusammenfassung Rückgabewert Methodenname (Argument);

Indem Sie eine Methode mit "abstracrt" deklarieren, können Sie eine Methode einer mehrdeutigen Klasse definieren und die folgenden Effekte erzielen.

bewirken

-Wenn Sie es nicht überschreiben und implementieren, tritt ein Fehler auf. Vergessen Sie daher nicht, das Überschreiben zu vergessen. * Es wird nicht als mehrdeutig instanziiert ・ Es kann zwischen der Definition von "nichts tun" und der Definition von "nichts tun" unterschieden werden.

So definieren Sie eine mehrdeutige Klasse ②

In ähnlicher Weise wird eine Klasse mit mehrdeutigen Methoden wie der obigen "menschlichen" Klasse wie folgt definiert.

//Klassendefinition
Zugriffsmodifikator abstrakte Klasse Rückgabewert Klassenname (Argument);

Regel

Klassen mit nur einer mehrdeutigen Methode müssen immer "abstrakt" sein.

bewirken

Über die Schnittstelle

Regel

-Abstraktierte Methoden, bei denen alle Methoden "abstract" verwenden

Wie man ... macht

Access Modifier Interface Schnittstellenname (Argument);

Vererbungsmethode

Der Klassenname der Zugriffsmodifikatorklasse implementiert den Namen der übergeordneten Schnittstelle{
}

implementieren = bedeutet implementieren

Vorteile der Verwendung einer Schnittstelle

Das Implementieren einer Schnittstelle erzwingt die Implementierung der Methode und garantiert, dass zumindest die Mitglieder, die diese Schnittstelle haben, sie haben.

Charakteristisch

-Interface-Methoden werden automatisch mit ** public abstract ** gekennzeichnet -Das Schnittstellenfeld ist immer mit ** public static final ** gekennzeichnet ・ Mehrfachvererbung ist möglich * Details werden unten beschrieben

Über Mehrfachvererbung

---------- (störendes Beispiel) --------------- ・ Menschliche Klasse "Bewegungsmethode" Gehen und bewegen

・ Teufelsklasse "Bewegungsmethode" Fliegen und bewegen   ↓ Mehrfachvererbung, um Devilman zu generieren!

・ Devilman-Klasse hqdefault.jpg

"Verschiebungsmethode" Welche sollte vererbt werden ...? ?? ??   ――――――――――――――――――――――――――――――――――――――――――――

---------- (für Schnittstellen) --------------- ・ Menschliche Schnittstelle "Verschiebungsmethode" nicht implementiert ・ Teufelsschnittstelle "Verschiebungsmethode" nicht implementiert

↓ Mehrfachvererbung, um Devilman zu generieren!

・ Devilman-Klasse story_img_1.jpg

Implementierung der "Verschiebungsmethode": Fliegen und Verschieben

――――――――――――――――――――――――――――――――――――――――――――

Kurz gesagt, verschiedene Klassen verfügen möglicherweise über Methoden wie "Verschieben", sodass das Risiko von Implementierungskonflikten besteht. Im Fall einer Schnittstelle wird sie jedoch, da sie nicht implementiert ist, selbst wenn eine Methode behandelt wird, in einer untergeordneten Schnittstelle implementiert, sodass kein Konflikt besteht. Daher kann die ** Schnittstelle mehrfach vererbt werden. ** ** **

Mehrfachvererbungsmethode

Der Klassenname der Zugriffsqualifizierungsklasse implementiert den Namen der übergeordneten Schnittstelle 1,Name der übergeordneten Schnittstelle 2 ...{
}

Bei gleichzeitiger Verwendung von Erweiterungsgeräten

Der Klassenname der Zugriffsqualifizierungsklasse erweitert den Namen der übergeordneten Klasse und implementiert den Namen der übergeordneten Schnittstelle 1,Name der übergeordneten Schnittstelle 2 ...{
}

Zusammenfassung der Verwendung von Erweiterungswerkzeugen

Vererbungsquelle Vererbungsziel Für die Vererbung verwendete Wörter Anzahl der Vererbungsquellen
Klasse Klasse extend 1
Schnittstelle Klasse implement Ein oder mehr
Schnittstelle Schnittstelle extend Ein oder mehr

Recommended Posts

Erweiterte Vererbung
Erbe
Erbe
Zusammenfassung der erweiterten Vererbung, Schnittstelle -java
Über die Vererbung
[Java] Vererbung
Java-Vererbung
Java-Vererbung
Java (Vererbung)
[Java] Klassenvererbung
Informationen zur Klassenvererbung.
Informationen zur Ruby-Vererbung
Über Java-Vererbung
Vererbung und Schnittstelle.