Lassen Sie mich Ihnen zuerst das grundlegende Konzept sagen
In der Java -Sprache sind abstrakte Klasse und Schnittstelle zwei Mechanismen, die abstrakte Klassendefinitionen unterstützen. Gerade an der Existenz dieser beiden Mechanismen wird Java starke objektorientierte Fähigkeiten erhalten. Die abstrakte Klasse und Schnittstelle haben eine große Ähnlichkeit zur Unterstützung abstrakter Klassendefinitionen und können sogar durch einander ersetzt werden. Daher scheinen viele Entwickler bei der Definition der abstrakten Klasse eine willkürliche Auswahl für abstrakte Klasse und Schnittstelle zu haben. Tatsächlich gibt es immer noch einen großen Unterschied zwischen den beiden. Die Wahl von ihnen spiegelt sogar wider, ob das Verständnis der Essenz des Problembereichs und des Verständnisses der Designabsicht korrekt und vernünftig ist.
Abstrakte Klasse und Schnittstelle werden beide in der Java -Sprache verwendet, um abstrakte Klassen durchzuführen (die abstrakte Klasse in diesem Artikel wird nicht aus der abstrakten Klasse übersetzt, sondern stellt einen abstrakten Körper dar, und die abstrakte Klasse ist eine Methode, die in der Java -Sprache verwendet wird, um abstrakte Klassen zu definieren. Bitte achten Sie auf die Auszeichnung). Was ist also eine abstrakte Klasse? Welche Vorteile können abstrakte Klassen für uns nutzen?
Im objektorientierten Konzept wissen wir, dass alle Objekte durch Klassen dargestellt werden, aber umgekehrt nicht. Nicht alle Klassen werden verwendet, um Objekte zu beschreiben (konkretisieren Klassen). Wenn eine Klasse nicht genügend Informationen enthält, um ein konkretes Objekt zu beschreiben, ist eine solche Klasse eine abstrakte Klasse. Abstrakte Klassen werden häufig verwendet, um abstrakte Konzepte darzustellen, die wir bei der Analyse und Gestaltung der Problembereiche erhalten, und sind Abstraktionen einer Reihe konkreter Konzepte, die unterschiedlich, aber im Wesentlichen gleich erscheinen. Zum Beispiel: Wenn wir eine grafische Bearbeitungssoftware entwickeln, werden wir feststellen, dass es im Problembereich bestimmte Konzepte wie Kreise und Dreiecke gibt. Sie sind unterschiedlich, aber sie gehören alle zum Konzept der Form. Das Formkonzept existiert im Problembereich nicht. Es ist ein abstraktes Konzept. Gerade weil abstrakte Konzepte in dem Problembereich nicht entsprechende konkrete Konzepte aufweisen, dass abstrakte Klassen zur Darstellung abstrakter Konzepte nicht instanziiert werden können.
Virtuelle Funktionen und Schnittstellen werden häufig in der Java -Entwicklung verwendet. Was ist der Unterschied zwischen diesen beiden?
Zusammenfassung: Nur eine übergeordnete Klasse kann in einer Unterklasse vererbt werden
Schnittstelle: Unterklassen können mehrere Schnittstellen implementieren
Also, wann Sie Abstract verwenden und wann Sie die Schnittstelle verwenden können?
Wenn sich eine Unterklasse und die Elternklasse in einer Beziehung befinden, ist beispielsweise eine Asiaten eine Person, dann kann eine asiatische Unterklasse die Elternklasse einer Person erben.
Wenn die Unterklasse und die Elternklasse wie eine Beziehung sind, ist beispielsweise ein Superman in Amerika wie ein Superman. Die Fähigkeiten des Superman sind nicht jeder, daher sind sie nicht alle Attribute. Wir können Supermächte nicht der menschlichen Elternklasse zuschreiben. Zu diesem Zeitpunkt können wir die Schnittstelle verwenden
Codebeispiel:
public abstract Class Man {public abstract void eat ();} öffentliche Schnittstelle Supermacht {public void Superpower ();} öffentliche Klasse Asisian erweitert den Menschen {@Overridepublic void Eat () {System.out.Println ("Asiaten Eat mit Chopsticks"); {System.out.println ("American Superman Can Fly");}@oversidepublic void Eat () {System.out.println ("American Eats with Messer und Fork");}} public static void Main (String [] args) {Man Anasisian = New Asiaan (); AmericanSuperman (); Anasisian.eat (); anamericansuperman.eat (); Anamericansuperman.SuperPower ();}Auslaufergebnisse:
Amerikaner essen mit Messer und Gabel Amerikaner Superman können Asiaten mit Essstäbchen essen fliegen
Die korrekte Verwendung von Abstract und Schnittstelle ist vorteilhaft, um die Lesbarkeit des Codes zu verbessern. Wenn Menschen sich verlängern, wissen sie, was ein ist. Wenn sie implementiert werden, können sie wissen, wie diese Klasse eine Funktion hat.