Eine Klasse, die den abstrakten Modifikator enthält, ist eine abstrakte Klasse, und eine abstrakte Klasse kann keine Instanzobjekte erstellen. Klassen, die abstrakte Methoden enthalten, müssen als abstrakte Klassen definiert werden, und Methoden in Klassen abstrakter Klassen müssen nicht abstrakt sein. Abstrakte Methoden, die in einer abstrakten Klasse definiert sind, müssen in einer konkreten Unterklasse implementiert werden, daher kann es keine abstrakten Konstruktoren oder abstrakten statischen Methoden geben. Wenn die Unterklasse nicht alle abstrakten Methoden in der abstrakten Elternklasse implementiert, muss die Unterklasse auch als abstrakter Typ definiert werden.
Eine Schnittstelle kann als Sonderfall einer abstrakten Klasse bezeichnet werden, und alle Methoden in der Schnittstelle müssen abstrakt sein. Die Methodendefinitionen in der Schnittstelle sind standardmäßig auf den öffentlichen abstrakten Typ und die Mitgliedsvariablentypen in der Schnittstelle sind standardmäßig auf öffentliches statisches Finale eingestellt.
Vergleichen wir die grammatikalischen Unterschiede zwischen den beiden :
1. Abstrakte Klassen können Konstruktoren haben, Schnittstellen jedoch keine Konstruktoren.
2. In abstrakten Klassen können gewöhnliche Mitgliedsvariablen vorhanden sein, in Schnittstellen gibt es jedoch keine gewöhnlichen Mitgliedsvariablen.
3. Abstrakte Klassen können nicht abstrakte gewöhnliche Methoden enthalten. Alle Methoden in der Schnittstelle müssen abstrakt sein und es dürfen keine nicht abstrakten gewöhnlichen Methoden vorhanden sein.
4. Die Zugriffstypen abstrakter Methoden in abstrakten Klassen können öffentlich, geschützt und (Standardtyp) sein
Unter Eclipse wird kein Fehler gemeldet, aber es sollte nicht funktionieren. Die abstrakte Methode in der Schnittstelle kann jedoch nur vom öffentlichen Typ sein, und der Standardwert ist der öffentliche abstrakte Typ.
5. Abstrakte Klassen können statische Methoden enthalten, Schnittstellen jedoch keine statischen Methoden.
6. Sowohl abstrakte Klassen als auch Schnittstellen können statische Mitgliedsvariablen enthalten. Der Zugriffstyp statischer Mitgliedsvariablen in abstrakten Klassen kann beliebig sein, in Schnittstellen definierte Variablen können jedoch nur vom öffentlichen statischen Endtyp sein, und der Standardwert ist der öffentliche statische Endtyp.
7. Eine Klasse kann mehrere Schnittstellen implementieren, aber nur eine abstrakte Klasse erben.
Lassen Sie uns über die Unterschiede zwischen den beiden in der Anwendung sprechen :
Schnittstellen spielen bei Entwurfsmethoden für Systemarchitekturen eine größere Rolle und werden hauptsächlich zur Definition von Kommunikationsverträgen zwischen Modulen verwendet. Abstrakte Klassen spielen eine Rolle bei der Code-Implementierung und können die Wiederverwendung von Code realisieren. Beispielsweise ist das Entwurfsmuster für Vorlagenmethoden eine typische Anwendung abstrakter Klassen. Es wird davon ausgegangen, dass alle Servlet-Klassen in einem Projekt dieselbe Methode verwenden müssen, um Berechtigungen zu ermitteln und aufzuzeichnen Zugriff protokollieren und behandeln. Anschließend können Sie eine abstrakte Basisklasse definieren, sodass alle Servlets diese abstrakte Basisklasse erben. Die Berechtigungsbeurteilung, die Zugriffsprotokollaufzeichnung und der Ausnahmebehandlungscode werden abgeschlossen Vervollständigen Sie nur ihre jeweiligen Geschäftslogikcodes. Der Pseudocode lautet wie folgt: