Abstrakte Klassen und Schnittstellen sind die beiden Hauptbausteinedes . Obwohl beide hauptsächlich zur Abstraktion verwendet werden, unterscheiden sie sich stark voneinander und können nicht austauschbar verwendet werden. In diesem Artikel wollen wir herausfinden, was der Unterschied zwischen abstrakter Klasse und Schnittstelle in Java ist.
In diesem Artikel werden folgende Themen behandelt:
- Was ist eine abstrakte Klasse in Java?
- Schnittstelle in Java
- Abstrakte Klasse gegen Schnittstelle
- Wann wird die abstrakte Klasse verwendet und wann wird die Schnittstelle verwendet?
Um die Unterschiede zwischen abstrakter Klasse und Schnittstelle in zu verstehen müssen Sie wissen, was eine abstrakte Klasse ist und was eine Schnittstelle ist. Beginnen wir also damit, zu diskutieren, was das ist.
Was ist Abstract Class in Java?
In jeder Programmiersprache, Abstraktion bedeutet, die irrelevanten Details vor dem Benutzer zu verbergen, um sich nur auf die wesentlichen Details zu konzentrieren, um die Effizienz zu steigern und dadurch die Komplexität zu verringern. In Java wird die Abstraktion mit erreicht abstrakte Klassen . Eine abstrakte Klasse erfasst gemeinsame Merkmale von Unterklassen und kann eine abstrakte Methode enthalten oder nicht. Es kann nicht instanziiert werden, sondern kann nur von seinen Unterklassen als Oberklasse verwendet werden. Hier ist ein Beispielprogramm, das eine abstrakte Klasse demonstriert:
Hinweis: Ein abstrakte Methode ist eine Methode, die nicht implementiert ist und hinzufügtUnvollständigkeit zu Klasse .
Paket MyPackage // abstrakte Klasse abstrakte Klasse Animal {String AnimalName = '' Animal (String name) {this.AnimalName = name} // nicht abstrakte Methoden deklarieren // Standardimplementierung public void BasicInfo (String details) {System. out.println (this.AnimalName + '' + details)} // abstrakte Methoden, die // von ihren Unterklassen implementiert werden abstrakte öffentliche Leere Lebensraum () abstrakte öffentliche Leere Atmung ()} Klasse Terrestrisch erweitert Tier {// Konstruktor Terrestrial (String name) {super (name)} @Override public void Habitat () {System.out.println ('an Land lassen und')} @Override public void respiration () {System.out.println ('respire durch Lunge oder Luftröhre. ')}} Klasse Aquatic erweitert Tier {// Konstruktor Aquatic (String name) {super (Name)} @Override public void Habitat () {System.out.println (' Es verlässt im Wasser und ') } @Override public void respiration () {System.out.println ('durch Kiemen oder deren Haut atmen.')}} Klasse AbstractClassDemo {public static voi d main (String [] args) {// Objekt der terrestrischen Klasse erstellen // und Tierklassenreferenz verwenden. Animal object1 = new Terrestrial ('Humans') object1.BasicInfo ('sind terrestrische Wesen, sie') object1.habitat () object1.respiration () System.out.println ('') // Erstellen der Objekte der Kreisklasse Animal object2 = new Aquatic ('Fishes') object2.BasicInfo ('sind aqautische Wesen, sie') object2.habitat () object2.respiration ()}}
Ausgabe
Menschen sind irdische Wesen, sie verlassen das Land und atmen durch Lunge oder Luftröhre. Fische sind aqautische Wesen, sie verlassen sie im Wasser und atmen durch Kiemen oder ihre Haut.
Das Basisinformation () ist eine Methode, die von geteilt wird Terrestrisch und Wasser Klassen. Schon seit Tierklasse kann nicht initiiert werden, wir erstellen die Objekte von Terrestrisch und Wasser Klassen für Programmierzwecke. Als nächstes haben wir Schnittstellen.
Schnittstelle in Java
Ein anderer Weg zu erreichen Abstraktion in Java ist mit Schnittstellen .Eine Schnittstelle ist eine Sammlung abstrakter Methoden, sie hat keine konkreten im Gegensatz zu einer abstrakten Klasse. Im Gegensatz zur abstrakten Klasse bietet eine Schnittstelle eine vollständige Abstraktion in Java. Es kann sowohl Methoden als auch Variablen wie eine Klasse haben. Die in einer Schnittstelle deklarierten Methoden sind jedoch standardmäßig abstrakt.Hier ist eine abstrakte Klasse demonstrieren:
Verwendung von Alert in Javascript
Paket MyPackage-Schnittstelle Animals {// abstrakte Methoden void Habitat () void Respiration ()} Klasse TerrestrialA implementiert Animals {String AnimalName = '' // Konstruktor TerrestrialA (String name) {this.AnimalName = name} @Override public void Habitat () {System.out.println (this.AnimalName + 'an Land lassen und')} @Override public void respiration () {System.out.println ('durch Lunge oder Luftröhre atmen.')}} Klasse AquaticA implementiert Animals {String AnimalName = '' // Konstruktor AquaticA (String name) {this.AnimalName = name} @Override public void Habitat () {System.out.println (this.AnimalName + 'im Wasser lassen und')} @Override public void respiration () {System.out.println ('durch Kiemen oder deren Haut atmen.')}} Klasse JavaInterfaceDemo {public static void main (String [] args) {// Erstellen des Objekts der terrestrischen Klasse // und Verwenden der Tierklassenreferenz . Tiere object1 = new TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // Erstellen der Objekte der Kreisklasse Animals object2 = new AquaticA ('Fishes') object2.habitat () object2.respiration ()}}
Ausgabe
Menschen verlassen das Land und atmen durch Lunge oder Luftröhre. Fische verlassen das Wasser und atmen durch Kiemen oder deren Haut.
Wenn Sie keinen gemeinsamen Code zwischen Ihrem haben Klassen , dann können Sie für die Schnittstelle gehen. Eine Schnittstelle ähnelt eher einer Blaupause einer Klasse, da sie keine nicht abstrakten Methoden enthält.
Anhand des obigen Inhalts haben Sie möglicherweise den Hauptunterschied zwischen abstrakter Klasse und Schnittstelle in bemerkt . Was im Gegensatz zu abstrakten Klassen eine Schnittstelle voll bietet Abstraktion in Java. Lassen Sie uns nun weitere Unterschiede auflisten.
Abstrakte Klasse gegen Schnittstelle
In der folgenden Tabelle sind die wichtigsten Unterschiede zwischen abstrakter Klasse und Schnittstelle aufgeführt.
Parameter | Abstrakte Klasse | Schnittstelle |
Implementierung der Standardmethode | Es kann eine Standardmethodenimplementierung haben | Schnittstellen bieten reine Abstraktion und können überhaupt nicht implementiert werden |
Variablen | Es kann nicht endgültige Variablen enthalten. | In einer Schnittstelle deklarierte Variablen sind standardmäßig final |
Verwendetes Schlüsselwort | Eine abstrakte Klasse kann mit dem Schlüsselwort „erweitert | Die Schnittstelle sollte mithilfe von Schlüsselwortelementen implementiert werden |
Zugriffsmodifikatoren | Kannhaben öffentlichen, geschützten, privaten und Standard-Modifikator | Schnittstellenmethoden sind standardmäßig öffentlich. Sie können damit keinen anderen Zugriffsmodifikator verwenden |
Geschwindigkeit der Implementierung | Es ist schneller als die Schnittstelle | Eine Schnittstelle ist etwas langsamer und erfordert zusätzliche Indirektion flache vs tiefe Kopie Java |
Normale Klasse | Es kann nur eine abstrakte Klasse erweitern | Kann mehrere Schnittstellen implementieren |
Konstruktoren | Eine abstrakte Klasse kann Konstruktoren haben | Eine Schnittstelle kann keine Konstruktoren haben |
Mehrfachvererbung | Eine abstrakte Klasse kann eine andere Klasse erweitern und mehrere Java-Schnittstellen implementieren | Die Schnittstelle kann nur eine andere Java-Schnittstelle erweitern |
Nun haben Sie die wichtigsten Unterschiede zwischen abstrakter Klasse und Schnittstelle in Java. Aber wie entscheiden Sie, wann Sie welche dieser beiden verwenden?
Wann wird die abstrakte Klasse verwendet und wann wird die Schnittstelle verwendet?
Erwägen Sie die Verwendung abstrakter Klassen in den folgenden Fällen:
- Wenn Sie einige verwandte Klassen haben, die die teilen müssen gleiche Codezeilen
- Wenn Sie das definieren möchten nicht statische oder nicht endgültige Felder
- Wenn es gibtMethoden oder Felderoder erfordern Zugriffsmodifikatoren anders als öffentlich (wie geschützt und privat)
Erwägen Sie die Verwendung von Schnittstellen in den folgenden Fällen:
- Wenn Sie erreichen wollen reine Abstraktion
- Wenn Sie beschäftigen möchten mehrere dhImplementieren Sie mehr als eine Schnittstelle
- Wenn Sie das Verhalten eines bestimmten Datentyps angeben möchten, sich aber nicht darum kümmern möchten, wer sein Verhalten implementiert.
Dies bringt uns zum Ende dieses Artikels. Ich habe eine der am häufigsten gestellten Java-Fragen im Interview behandelt, nämlich den Unterschied zwischen abstrakter Klasse und Schnittstelle in Java.
Stellen Sie sicher, dass Sie so viel wie möglich üben und Ihre Erfahrung zurücksetzen.
Besuche die von Edureka, einem vertrauenswürdigen Online-Lernunternehmen mit einem Netzwerk von mehr als 250.000 zufriedenen Lernenden auf der ganzen Welt. Wir sind hier, um Ihnen bei jedem Schritt auf Ihrer Reise zu helfen. Neben diesen Fragen zu Java-Interviews erstellen wir einen Lehrplan, der für Studenten und Fachleute konzipiert ist, die Java-Entwickler werden möchten.
Hast du eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich dieser 'Java Map-Oberfläche'. Artikel und wir werden uns so schnell wie möglich bei Ihnen melden.