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.
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.
-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.
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);
Klassen mit nur einer mehrdeutigen Methode müssen immer "abstrakt" sein.
-Abstraktierte Methoden, bei denen alle Methoden "abstract" verwenden
Access Modifier Interface Schnittstellenname (Argument);
Der Klassenname der Zugriffsmodifikatorklasse implementiert den Namen der übergeordneten Schnittstelle{
}
implementieren = bedeutet implementieren
Das Implementieren einer Schnittstelle erzwingt die Implementierung der Methode und garantiert, dass zumindest die Mitglieder, die diese Schnittstelle haben, sie haben.
-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
---------- (störendes Beispiel) --------------- ・ Menschliche Klasse "Bewegungsmethode" Gehen und bewegen
・ Teufelsklasse "Bewegungsmethode" Fliegen und bewegen ↓ Mehrfachvererbung, um Devilman zu generieren!
・ Devilman-Klasse
"Verschiebungsmethode" Welche sollte vererbt werden ...? ?? ?? ――――――――――――――――――――――――――――――――――――――――――――
---------- (für Schnittstellen) --------------- ・ Menschliche Schnittstelle "Verschiebungsmethode" nicht implementiert ・ Teufelsschnittstelle "Verschiebungsmethode" nicht implementiert
↓ Mehrfachvererbung, um Devilman zu generieren!
・ Devilman-Klasse
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. ** ** **
Der Klassenname der Zugriffsqualifizierungsklasse implementiert den Namen der übergeordneten Schnittstelle 1,Name der übergeordneten Schnittstelle 2 ...{
}
Der Klassenname der Zugriffsqualifizierungsklasse erweitert den Namen der übergeordneten Klasse und implementiert den Namen der übergeordneten Schnittstelle 1,Name der übergeordneten Schnittstelle 2 ...{
}
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