Wir alle wissen, dass Objekte durch Klassen beschrieben werden, aber das bedeutet nicht, dass alle Klassen zur Beschreibung von Objekten verwendet werden
Eine Klasse enthält nicht genügend Informationen, um a zu beschreiben spezifisches Objekt, das ist die abstrakte Klasse
Das Schlüsselwort der abstrakten Klasse: abstract
Werfen wir zunächst einen Blick auf die zuvor geschriebene Klasse:
class Plant { String name; String source; String genus; public void trait() { System.out.println("父类方法"); } } class Tree extends Plant { @Override public void trait() { System.out.println("子类方法"); } }
Da die Trait-Methode eine überschriebene Methode ist, dann dort Es ist überhaupt nicht nötig, das Merkmal der übergeordneten Klasse zu implementieren, also können wir es in eine abstrakte Methode umwandeln
Hinweis: Eine abstrakte Klasse kann keine abstrakte Methode haben, aber die abstrakte Methode muss in der abstrakten Klasse sein
abstract class Plant { String name; String source; String genus; public abstract void trait(); } class Tree extends Plant { @Override public void trait() { System.out.println("子类方法"); } }
1. Abstrakte Klassen sind für die Vererbung gedacht und können sich daher nicht von gewöhnlichen Klassen unterscheiden
2 , aber abstrakte Methoden müssen in abstrakten Klassen vorhanden sein
3. Wenn eine normale Klasse eine abstrakte Klasse erbt, muss sie alle abstrakten Methoden in der abstrakten Klasse neu schreiben
4 Es besteht derzeit keine Notwendigkeit, abstrakte Methoden neu zu schreiben
5. Final kann abstrakte Klassen und abstrakte Methoden nicht ändern
6. Abstrakte Methoden können nicht mit privaten und statischen Methoden geändert werden
Einige Leute finden es möglicherweise seltsam: Gewöhnliche Klassen können auch vererbt werden Warum müssen wir als übergeordnete Klassen eine weitere abstrakte Klasse erstellen?
Wir könnten genauso gut ein Szenario annehmen: Sie instanziieren das übergeordnete Klassenobjekt, wenn Sie das Objekt instanziieren, wie folgt:
public static void main(String[] args) { Plant tree=new Plant(); tree.trait(); }
Wenn die übergeordnete Klasse eine normale Klasse ist, meldet der Compiler zu diesem Zeitpunkt keinen Fehler und ruft direkt auf Methode der übergeordneten Klasse
Wenn die übergeordnete Klasse eine abstrakte Klasse ist, meldet der Compiler direkt einen Fehler, sodass das Problem früher erkannt werden kann
In Java kann die Schnittstelle als angesehen werden die öffentliche Spezifikation mehrerer Klassen, und es handelt sich um einen Referenztyp Daten
Schnittstellenschlüsselwort: Schnittstelle
2.2 Details der Schnittstelle
1 von anderen Klassen und kann nicht instanziiert werden
2. Innerhalb der Schnittstelle können Methoden nur abstrakte Methoden sein, und der Standardwert ist öffentliche statische Modifikation
3 Die Mitgliedsvariablen der Schnittstelle sind standardmäßig statische Konstanten, daher müssen sie initialisiert werden
4. Das zum Implementieren der Schnittstelle verwendete Schlüsselwort lautet „implementiert“, und die Klassenimplementierungsschnittstelle muss noch neu geschrieben werden.
5 Schnittstellen können keine Konstruktoren und statischen Codeblöcke haben.
6
7. Beim Erstellen einer Schnittstelle beginnt der Name der Schnittstelle im Allgemeinen mit dem Großbuchstaben „I“ (empfohlen, keine zwingende Anforderung)
8 Schnittstellen können auch Polymorphismus erreichen
Die Hauptaufgabe von Schnittstellen in Java ist um Mehrfachvererbung zu implementieren
Eine Klasse in Java kann nur eine übergeordnete Klasse erben, aber mehrere Schnittstellen implementieren
Abstrakte Klassen und Schnittstellen sind ähnlich, aber der wichtigste Unterschied zwischen ihnen besteht darin, dass abstrakte Klassen gewöhnliche und gewöhnliche Mitgliedsmethoden haben können Mitgliedsvariablen, während Methoden in Schnittstellen nur abstrakte Methoden sein können
Die Einführung in abstrakte Klassen und Schnittstellen ist abgeschlossen. Im nächsten Artikel werden einige der wichtigeren Schnittstellen in Java vorgestellt
Das obige ist der detaillierte Inhalt vonAnalyse abstrakter Java-Klassen und Schnittstelleninstanzen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!