Heute werde ich über mein eigenes Verständnis für abstrakte Klassen und Schnittstellen in Java sprechen, einschließlich Referenzinhalt:
1.. Zusammenfassung Klasse
1. Definition:
public abstract Class -Name {}
Alle Objekte in der Java -Sprache werden nach Klassen beschrieben, aber nicht alle Klassen werden verwendet, um Objekte zu beschreiben. Die abstrakte Klasse, die ich verstehe, ist tatsächlich ein hohes Maß an Extraktion der öffentlichen Teile derselben Dinge, einschließlich Attributen und Verhaltensweisen. Zum Beispiel haben Rinder, Schafe und Schweine alle ihre öffentlichen Eigenschaften, und das öffentliche Verhalten stillt, sodass wir den öffentlichen Teil in ein Säugetier mit Attributen, Haaren und Verhaltensweisen zusammenfassen können. Wenn Rinder, Schafe und Schweine das Säugetier erben, haben sie auch die Funktion des Stillens. Wie Sie diese Funktion ausfüllen können, müssen sie sie selbst implementieren.
2. Merkmale
(1) Die durch das abstrakte Schlüsselwort modifizierte Klasse ist eine abstrakte Klasse.
(2) Klassen, die abstrakte Methoden enthalten, müssen abstrakte Klassen sein, aber abstrakte Klassen enthalten nicht unbedingt abstrakte Methoden; und abstrakte Methoden müssen öffentlich oder geschützt sein, andernfalls können sie nicht durch Unterklassen vererbt werden. Standard ist öffentlich.
(3) Es kann keine Implementierung in der abstrakten Methode geben, andernfalls wird die Zusammenstellung gemeldet.
(4) Sie können Ihre eigenen Mitgliedervariablen und Mitgliedermethoden in einer abstrakten Klasse definieren.
(5) Wenn eine Unterklasse eine abstrakte Klasse erbt, müssen alle abstrakten Methoden in der abstrakten Klasse implementiert werden, ansonsten muss die Unterklasse auch als abstrakte Klasse definiert werden.
(6) Abstrakte Klassen können nicht instanziiert werden.
3.. Überprüfen Sie, ob die oben genannten Bestimmungen tatsächlich wie angegeben sind
Dies ist eine Verifizierungstabelle, die ich in Wort bearbeitet habe, und ich schneide sie in ein Bild und lege sie hierher:
Die Beurteilung der Überprüfung in der obigen Abbildung zu urteilen, sind diese Theorien korrekt
2. Schnittstelle
1. Definition:
Public Interface Interface Name {}
Die Schnittstelle wird verwendet, um Methoden bereitzustellen. Nach meinem Verständnis handelt es sich um eine hochrangige Extraktion öffentlicher Verhaltensweisen mehrerer Klassen. Zum Beispiel ist das öffentliche Verhalten aller Tiere isst und schläft. Dann können wir diese beiden Verhaltensweisen in einer Schnittstelle extrahieren und verkapulieren. Wenn ein Tier dieses Verhalten ausführen muss, rufen Sie einfach die Schnittstelle an und vervollständigen Sie dann die spezifische Implementierung in seiner eigenen Klasse. Dieses Verständnis scheint sich nicht von abstrakten Klassen zu unterscheiden. Schauen wir uns das folgende Beispiel an. Wenn diese beiden Verhaltensweisen in eine abstrakte Klasse platziert werden, gibt es in der abstrakten Klasse jedoch auch ein kriechendes Verhalten. Zu diesem Zeitpunkt, wenn ein Reptil wie eine Schlange diese Klasse erbt, wird es die drei Methoden zum Essen, Schlafen und Kriechen erkennen, sodass es die Funktionen des Essens, Schlafens und Krabbeln hat. Aber wenn ein Tier einer fliegenden Klasse wie ein Vogel ist, wenn es diese Methode erbt, hat es auch die Funktionen des Essens, Schlafens und Krabbeln. Es ist offensichtlich, dass das Kriechen nicht die Funktion ist, die es benötigt, was ein bisschen Inkonsistenz ist. Wenn sie jedoch nur die Benutzeroberfläche des Essens und Schlafen erben, haben sie die grundlegenden Funktionen des Essens und Schlafens. Was das Klettern und Fliegen angeht, können sie in einer abstrakten Klasse abstrahiert und in eine abstrakte Klasse platziert werden, die auf Anfrage erben und die Funktionen erkennen, die sie bei Bedarf benötigen.
2. Merkmale:
(1) Die Schnittstelle kann ihre eigenen Mitgliedervariablen haben, sie werden jedoch implizit als öffentliches statisches Finale angegeben und können nur öffentliches statisches Finale sein. Alle Methoden in der Schnittstelle sind abstrakte Methoden und werden implizit als öffentliches Zusammenfassung festgelegt.
(2) In der Schnittstelle sind nur abstrakte Methoden definiert, und es gibt keine konkrete Implementierung.
(3) die Klasse, die eine Schnittstelle implementiert, muss alle in der Schnittstelle definierten Methoden implementieren.
3.. Überprüfen Sie, ob die obige Theorie korrekt ist
Ebenso sind die obigen Theorien alle richtig!
3.. Der Unterschied zwischen abstrakten Klassen und Schnittstellen:
1. Die abstrakte Klasse kann ihre eigenen Mitgliedermethoden und ihre spezifischen Implementierungen haben. Die Schnittstelle kann nur abstrakte Methoden enthalten;
2. Abstrakte Klassen können verschiedene Arten von Mitgliedsvariablen enthalten. Mitgliedervariablen in Schnittstellen können nur öffentliches statisches Finale sein.
3. Eine Klasse kann nur eine abstrakte Klasse erben, aber mehrere Schnittstellen implementieren.
4.. Abstrakte Klassen können statische Codeblöcke und statische Methoden enthalten. Statische Codeblöcke und statische Methoden können nicht in der Schnittstelle definiert werden.
Stellen Sie sicher, dass eine Klasse nur eine abstrakte Klasse erben kann, sondern mehrere Schnittstellen implementieren kann
Definieren Sie zunächst zwei abstrakte Klassen: ein Mummals -Säugetier und eine Crawler -Reptilienklasse
/** * @createtime 17. März 2017 um 10:33:27 Uhr * @Description Säugetiere */public abstrakte Klassen -Säugetiere {public String foods; public abstract void Nurse (); public void eat (String Food) {this.foods = foods; /** * * @CreateTime 17. März 2017 um 11:23:09 Uhr * @Description Definieren Sie eine abstrakte Klasse - Crawler -Klasse */public abstract Class Crawler {public abstract void crawl ();}Zweitens definieren Sie zwei Schnittstellen: Eine ist die Grundgrenzfläche der Basisreaktion; Das andere ist die Spezial -Spezialschnittstelle
/** * * @CreateTime 17. März 2017 um 11:03:42 Uhr * @Description Definieren Sie eine Schnittstelle mit dem Namen Basic Behavior */Public Interface Basiction {public String name = ""; public void eat (); public void schlaf ();};};};};};/*** @CreateTime 17. März 2017 um 11:24:56 Uhr* @Description Definieren Sie eine Schnittstelle, um ein spezielles Verhalten zu implementieren
Definieren Sie dann eine grundlegende Klassenmenschen, erben Sie die Mummalsklasse und implementieren
/** * @createtime 17. März 2017 um 11:25:48 Uhr * @Description Definieren einer gemeinsamen Klasse - menschliche, Erbsäugetiere, grundlegende Schnittstellen und spezielle Schnittstellen */Public Class People erweitert die MANTERRAUTS -Implementierung der Basisanlagen, Spezialität {@override public void study () {// todo auto -generated methode @override void (). Automatisch generierte Methode Stub} @Override public void sleep () {// Todo automatisch generierte Methode Stub} @Override public void prection () {// Todo Auto-Generated-Methode Stub}}}}}}}}}}}}}}}}Es ist ersichtlich, dass eine Unterklasse mehrere Schnittstellen implementieren kann.
Lassen Sie die Basisklassen -Leute schließlich gleichzeitig die Mummals -Klasse und die Crawler -Klasse erben
/** * @createtime 17. März 2017 um 11:25:48 Uhr * @Description Definieren einer gemeinsamen Klasse - menschliche, Erbsäugetiere, grundlegende Schnittstellen und spezielle Schnittstellen */public class -Personen erweitern Säugetiere, Crawler {@Override Public Void Nurse () {// todo auto -Generated Methodie}}}}}}}} methodie Stub} Stub} Stub} Stub} Stub} Stub}}}}}}}}}}}}}}}} methodie starb} stober}}}}}}}}}}}}}}}}}}} method stober}} starb} starb} starb}}}}}Zusammenfassen
Das obige ist der gesamte Inhalt dieses Artikels über kurz über das persönliche Verständnis von Java -abstrakten Klassen und Schnittstellen. Ich hoffe, es wird für alle hilfreich sein. Interessierte Freunde können weiterhin auf diese Seite verweisen:
Beispiele für Vererbung und abstrakter Bohnencode im Frühjahr
Einführung in die Kernideen und Schnittstellen von Hibernate
Beispiele für Schnittstellen- und Verwendungsmethoden in Java
Wenn es Mängel gibt, hinterlassen Sie bitte eine Nachricht, um darauf hinzuweisen. Vielen Dank an Freunde für Ihre Unterstützung für diese Seite!