1. Vererbung (Schlüsselwort: erweitert): (untergeordnete übergeordnete Klasse)
1. Verbessern Sie die Wiederverwendbarkeit des Codes.
2. Erstellen Sie eine Beziehung zwischen Klassen. Nur mit dieser Beziehung können wir die Merkmale des Polymorphismus erreichen.
1.1 Variablen
Wenn in der untergeordneten Elternklasse eine nicht private (private) Mitgliedsvariable mit demselben Namen erscheint, muss die untergeordnete Klasse auf die Variable in dieser Klasse zugreifen, diese und das untergeordnete Element verwenden Die Klasse muss auf denselben Namen in der übergeordneten Klasse zugreifen. Verwenden Sie für Variablen super.
Die Verwendung von Super ist fast die gleiche wie die Verwendung von This.
Dies stellt einen Verweis auf ein Objekt dieser Klasse dar.
Ein Verweis auf das übergeordnete Klassenobjekt, das durch super dargestellt wird.
1.2 Funktionen in der Unterklasse
Wenn in der Unterklasse eine Funktion erscheint, die genau mit der übergeordneten Klasse übereinstimmt,
Wenn das Unterklassenobjekt die Funktion aufruft, wird der Inhalt der Unterklassenfunktion angezeigt laufen. Genauso wie die Funktion der übergeordneten Klasse überschrieben wird.
Diese Situation ist ein weiteres Merkmal von Funktionen: Umschreiben (Überschreiben)
Wenn eine Unterklasse die übergeordnete Klasse erbt, erbt sie die Funktionen der übergeordneten Klasse in die Unterklasse, obwohl die Unterklasse vorhanden ist Diese Funktion stimmt jedoch nicht mit dem Inhalt der übergeordneten Klasse überein. In diesem Fall ist es nicht erforderlich, eine neue Funktion zu definieren. Verwenden Sie stattdessen die Überschreibungsfunktion, um die Funktionsdefinition der übergeordneten Klasse beizubehalten und den Funktionsinhalt neu zu schreiben .
Hinweise zum Überschreiben:
1. Wenn eine Unterklasse eine übergeordnete Klasse überschreibt, muss sichergestellt werden, dass die Berechtigungen der Unterklasse größer oder gleich den Berechtigungen der übergeordneten Klasse sind, bevor sie überschrieben werden kann , andernfalls schlägt die Kompilierung fehl. (Wenn Sie den Berechtigungsmodifikator nicht schreiben, liegt die Standardberechtigung zwischen privat und öffentlich.)
2. Statisch kann nur statisch überschreiben.
Überladen und Umschreiben:
Überladen: Sehen Sie sich nur die Parameterliste der Funktion mit demselben Namen an.
Umschreiben: Der Methodenname und der Rückgabetyp in der untergeordneten und übergeordneten Klasse müssen genau gleich sein. (Das heißt: Der Rückgabetyp und der Methodenname () müssen identisch sein)
1.3 Konstruktor in Unterklassen.
Beim Initialisieren eines Unterklassenobjekts wird auch der Konstruktor der Unterklasse ausgeführt. Das liegt daran, dass der Konstruktor der Unterklasse standardmäßig eine implizite Anweisung super() hat Greifen Sie auf den Konstruktor in der übergeordneten Klasse zu.
Hinweis: Die Super-Anweisung muss in der ersten Zeile des Unterklassenkonstruktors definiert werden.
Alle Konstruktoren der Unterklasse greifen standardmäßig mit leeren Parametern auf den Konstruktor der übergeordneten Klasse zu.
Da die erste Zeile jedes Konstruktors in der Unterklasse einen impliziten Super () enthält.
Wenn in der übergeordneten Klasse kein Konstruktor mit leeren Parametern vorhanden ist, muss die Unterklasse die Anforderungen manuell in Form eines Super angeben Anweisung. Greifen Sie auf den Konstruktor in der übergeordneten Klasse zu.
Natürlich: Die erste Zeile des Konstruktors der Unterklasse kann diese Anweisung auch manuell angeben, um auf den Konstruktor in dieser Klasse zuzugreifen. In der Unterklasse gibt es mindestens einen Konstruktor, der auf den Konstruktor in der übergeordneten Klasse zugreift. (Da sowohl this() als auch super() nur in der ersten Zeile des Konstruktors platziert werden können, kann nur einer von ihnen im Konstruktor existieren.)
2.Finale: Finale. als Modifikator.
2.1 Klassen, Funktionen und Variablen können geändert werden.
2.2 Durch final geänderte Klassen können nicht vererbt werden. Um Vererbung zu vermeiden, vermeiden Sie das Überschreiben von Funktionen durch Unterklassen.
2.3 Durch final geänderte Methoden können nicht überschrieben werden.
2.4 Eine durch final geänderte Variable ist eine Konstante, der nur einmal ein Wert zugewiesen werden kann. Sie kann entweder Mitgliedsvariablen oder lokale Variablen ändern. Bei der Beschreibung von Dingen werden bestimmte Werte festgelegt, um die Lesbarkeit zu verbessern. Diese Werte werden mit Namen versehen. Leicht zu lesen. Dieser Wert muss nicht geändert werden, daher wird die endgültige Änderung hinzugefügt. Als Konstante: Die Schreibkonvention für Konstanten ist die ausschließliche Großschreibung, wenn sie aus mehreren Wörtern bestehen. Wörter werden durch _ verbunden. (z. B.: final double PI = 3.14; final int SET_ON = 1;)
2.5 Wenn eine innere Klasse an einem lokalen Ort in der Klasse definiert ist, kann sie nur auf die durch final geänderten lokalen Variablen zugreifen.
3. Abstraktion:
3.1 Abstrakte Methoden müssen in abstrakten Klassen sein.
3.2 Sowohl abstrakte Methoden als auch abstrakte Klassen müssen durch das Schlüsselwort abstract geändert werden. (abstract class class name { abstract void method name (); })
3.3 Abstrakte Klassen können new nicht zum Erstellen von Objekten verwenden. Weil es keinen Sinn macht, abstrakte Methoden aufzurufen.
3.4 Um die abstrakten Methoden in einer abstrakten Klasse zu verwenden, müssen alle abstrakten Methoden von der Unterklasse neu geschrieben werden und dann kann das Unterklassenobjekt aufgerufen werden. Wenn eine Unterklasse nur einige abstrakte Methoden abdeckt, ist die Unterklasse immer noch eine abstrakte Klasse.
Ähnlichkeiten und Unterschiede zwischen allgemeinen Klassen und abstrakten Klassen: Es gibt keinen großen Unterschied zwischen abstrakten Klassen und allgemeinen Klassen. Man kann die Dinge so beschreiben, wie man sie beschreiben möchte, aber es gibt einige unverständliche Dinge an ihnen. Diese unbestimmten Teile, die auch die Funktion der Sache sind, müssen explizit erscheinen. Aber das Thema lässt sich nicht definieren. Dargestellt durch abstrakte Methoden.
Abstrakte Klassen haben eine abstraktere Funktion als gewöhnliche Klassen. Das heißt, abstrakte Methoden können in Klassen definiert werden.
Abstrakte Klassen können keine Instanzmethoden haben.
Besonderheit: Abstrakte Methoden müssen nicht in einer abstrakten Klasse definiert werden. Dies verhindert lediglich, dass die Klasse Objekte erstellt.
4. Vorlagenentwurfsmuster:
Beim Definieren einer Funktion wird ein Teil der Funktion bestimmt, aber ein Teil davon ist unsicher, und der bestimmte Teil verwendet den unsicheren Teil, dann wird der unsichere Teil teilweise offengelegt. Dies geschieht durch Unterklassen dieser Klasse.
5. Schnittstelle:
Das anfängliche Verständnis kann als spezielle abstrakte Klasse betrachtet werden. Wenn die Methoden in einer abstrakten Klasse abstrakt sind, kann die Klasse in Form einer Schnittstelle dargestellt werden.
class: wird zum Definieren von Klassen verwendet.
interface: wird zum Definieren von Schnittstellen verwendet. Eine Schnittstelle ist auch ein Typ. Es können Klassendateien generiert werden.
Bei der Definition einer Schnittstelle weist das Format Folgendes auf:
1. Gemeinsame Definitionen in Schnittstellen: Konstanten, abstrakte Methoden. Das Aufkommen von Schnittstellen verkörpert „Mehrfachvererbung“ in einer anderen Form, nämlich „Mehrfachimplementierungen“.
2. Mitglieder in der Schnittstelle haben feste Modifikatoren.
Konstante: öffentliches statisches Finale
Methode: öffentliche Zusammenfassung
Denken Sie daran: Alle Mitglieder in der Schnittstelle sind öffentlich.
Schnittstelle: Es ist nicht möglich, Objekte zu erstellen, da es abstrakte Methoden gibt. Es muss von einer Unterklasse implementiert werden. Erst nachdem die Unterklasse alle abstrakten Methoden in der Schnittstelle neu geschrieben hat, kann die Unterklasse instanziiert werden. Ansonsten ist die Unterklasse eine abstrakte Klasse.
eg: interface Inter
{
//Es ist in Ordnung, wenn die öffentlichen statischen finalen und öffentlichen abstrakten Modifikatoren fehlen, da Mitglieder in der Schnittstelle feste Modifikatoren haben. Es ist jedoch am besten, während der Entwicklung zu schreiben, um die Lesbarkeit zu verbessern.
public static final int SET_ON = 1;
public abstract void show();
}
//Schnittstellenimplementierungen verwenden
class Test implementiert Inter (){} //Sie müssen überschreiben die abstrakte Methode show zum Erstellen eines Objekts
}
class InterfaceDemo
{
public static void main(String[] args)
{
Test t = new Test();
System.out.println(t.SET_ON);
Regeln für externe Belichtung.
Schnittstellen können für mehrere Implementierungen verwendet werden.
Zwischen Klassen und Schnittstellen besteht eine Implementierungsbeziehung. Eine Klasse kann eine Klasse erben und gleichzeitig mehrere Schnittstellen implementieren.Es kann eine Vererbungsbeziehung zwischen Schnittstellen bestehen.
6. Polymorphismus: Definition: mehrere Existenzformen einer bestimmten Art von Dingen.
zB: Katzen und Hunde unter Tieren
Der entsprechende Typ des Katzenobjekts ist Katzentyp
Katze x = neue Katze();
Gleichzeitig ist die Katze auch eine Art Tier , und für Tiere kann man sie auch als Katze bezeichnen.
Animal y = new cat();
Animal ist der übergeordnete Typ, der aus den spezifischen Dingen von Katzen und Hunden extrahiert wird.
Die übergeordnete Typreferenz verweist auf das Untertypobjekt.
6.1. Reflexion des Polymorphismus:
Die Referenz der übergeordneten Klasse zeigt auf ihr eigenes Unterklassenobjekt.
Die Referenz der übergeordneten Klasse kann auch ein eigenes Unterklassenobjekt erhalten.
zB: Elternklasse Referenzname der Elternklasse = neue Unterklasse();//Typförderung. Transformation nach oben. Um die eindeutigen Funktionen der Unterklasse zu verwenden, müssen Sie einen Downcast durchführen: Unterklasse neuer Unterklassen-Referenzname = (Unterklasse) ursprünglicher Referenzname der übergeordneten Klasse
Schlüsselwörter: Instanz von Referenztyp bestimmen
Beispiel: if (eine Instanz von Cat) // Bestimmen Sie, ob a ein Katzentyp ist.
6.2. Voraussetzung für Polymorphismus:
Es muss eine Beziehung zwischen Klassen bestehen. Entweder erben oder implementieren.
Normalerweise gibt es eine Voraussetzung: Unterklassen müssen überschrieben (neu geschrieben) werden.
6.3. Vorteile des Polymorphismus:
Das Aufkommen des Polymorphismus hat die Skalierbarkeit von Programmen erheblich verbessert.
6.4. Nachteile von Polymorphismus:
Verbessert die Skalierbarkeit, aber Sie können nur Referenzen aus der übergeordneten Klasse verwenden, um auf Mitglieder der übergeordneten Klasse zuzugreifen.
6.5 Merkmale nicht statischer Memberfunktionen im Polymorphismus:
Zur Kompilierungszeit: Überprüfen Sie, ob es in der Klasse, zu der die Referenzvariable gehört, eine aufrufende Methode gibt. Wenn dies der Fall ist, ist die Kompilierung erfolgreich; andernfalls schlägt die Kompilierung fehl.
Zur Laufzeit: Prüfen Sie, ob in der Klasse, zu der das Objekt gehört, eine aufzurufende Methode vorhanden ist.
Eine einfache Zusammenfassung lautet: Wenn eine Mitgliedsfunktion polymorph aufgerufen wird, achten Sie beim Kompilieren auf die linke Seite und beim Ausführen auf die rechte Seite.
6.6 Eigenschaften von Mitgliedsvariablen im Polymorphismus:
Egal beim Kompilieren oder Ausführen, beziehen Sie sich auf die linke Seite (die Klasse, zu der die Referenzvariable gehört).
Eigenschaften statischer Mitgliedsfunktionen im Polymorphismus:
Unabhängig vom Kompilieren und Ausführen beachten Sie die linke Seite (statisch selbst kann direkt aufgerufen werden).
7.Objekt: Es ist die direkte oder indirekte übergeordnete Klasse aller Objekte, der legendäre Gott.
Was in dieser Klasse definiert ist, müssen die Funktionen sein, die alle Objekte haben.
Zugriffsregeln für innere Klassen:
1. Innere Klassen können direkt auf Mitglieder in äußeren Klassen zugreifen, einschließlich privater.
2. Um auf eine interne Klasse zuzugreifen, muss eine externe Klasse ein internes Klassenobjekt erstellen.
Das obige ist der detaillierte Inhalt vonZusammenfassung der Java-Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!