Was ist eine abstrakte Klasse und abstrakte Methode in Java? Wann sollte ich es verwenden? Tutorial beigefügt

Veröffentlicht: 2019-09-12
Java-Abstract-Klassen-Tutorial-von-Crunchify

Vor ein paar Tagen schrieb ich einen Artikel über grundlegende Java-Grundlagen zum Thema Was ist eine Schnittstelle in Java und wie wird sie verwendet? Dieses Tutorial bezieht sich auch auf grundlegende Java-Grundlagen „ Abstract Class and Abstract Method “.

Was ist eine abstrakte Klasse?

Beginnen wir zuerst mit dem Verständnis der Abstract-Klasse und gehen dann das Beispiel durch.

  • Eine abstrakte Klasse ist eine Klasse, die als abstract deklariert wird
  • Abstrakte Klassen können nicht instanziiert werden
  • Abstrakte Klassen können in Unterklassen unterteilt werden
  • Es kann abstrakte Methoden enthalten oder nicht
  • Wenn eine abstrakte Klasse subclassed ist, stellt die Subklasse normalerweise Implementierungen für alle abstrakten Methoden in ihrer übergeordneten Klasse bereit
  • Wenn die Unterklasse keine Implementierungen bereitstellt, muss die Unterklasse auch als abstract deklariert werden.

Dies ist eine sehr basic Java Interview Question . Wahrscheinlich die 1 st Java Interview Question , die Sie während des Vorstellungsgesprächs erhalten.

Kann ich eine abstrakte Klasse definieren, ohne eine abstrakte Methode hinzuzufügen?

Natürlich ja. Das Deklarieren einer Klasse als abstrakt bedeutet nur, dass Sie nicht zulassen, dass sie selbst instanziiert wird. Sie können keine abstrakte Methode in einer nicht abstrakten Klasse haben.

Was ist eine abstrakte Methode?

  • Eine abstract method ist eine Methode, die ohne Implementierung deklariert wird.
  • Es hat nur eine Methodensignatur.

Beginnen wir mit einem Beispiel. Problembeschreibung:

  1. Erstellen Sie die Klasse CrunchifyExam.java mit einer abstrakten Methode namens checkResult()
  2. Erstellen Sie die Klasse Crunchify1stSchoolExamResult.java , die die abstrakte Klasse CrunchifyExam.java
  3. Erstellen Sie die Klasse Crunchify2ndSchoolExamResult.java , die die abstrakte Klasse CrunchifyExam.java
  4. Jetzt müssen beide oben genannten Klassen eine Implementierung für die Methode checkResult() bereitstellen
  5. Beide Schulen können ihr eigenes procedure oder ihre eigene number of checks haben, um herauszufinden, ob der Benutzer PASSED or FAILED ist. Es steht ihnen frei, ihre eigene Implementierung von checkResult() zu haben.

Sobald Sie die CrunchifyExam -Klasse in Crunchify1stSchoolExamResult.java erweitern, fordert Eclipse Sie auf, die in CrunchifyExam.java erwähnten abstrakten Methoden zu implementieren

Abstrakte Methode implementieren - Crunchify Tutorial

CrunchifyErgebnis der 1. Schulprüfung.java

Crunchify2nd SchoolExamResult.java

Ergebnis der Eclipse-Konsole:

Klicken Sie einfach mit der rechten Maustaste auf Crunchify2ndSchoolExamResult.java und führen Sie es als Java Application aus, um das Ergebnis unten zu sehen.

Jetzt haben Sie vielleicht eine Frage

Warum kann ich hier nicht Interface verwenden, anstatt Abstract Method und Class und CrunchifyExam als Interface zu haben?

Nun – natürlich Sure you could – aber Sie müssten auch die getExamTime (), setExamTime (), getExamTime (), setExamTime () implementieren.

Durch die Verwendung abstrakter Klassen können Sie die Implementierung anderer (nicht abstrakter) Methoden erben. Mit Interfaces ist das nicht möglich – ein Interface cannot provide .

Ist es möglich, abstrakte und endgültige Klassen in Java zu erstellen?

  • Das Abstrakte und das Endgültige sind das sich gegenseitig ausschließende Konzept.
  • Die Antwort ist also NEIN, wir können eine abstrakte Klasse oder Methode in Java nicht final machen.
  • Die Abschlussklasse ist eine abgeschlossene Klasse und kann nicht verlängert werden.
  • Eine abstrakte Klasse wird als unvollständige Klasse bezeichnet und kann nur durch andere konkrete Klassen erweitert werden, und Sie müssen alle abstrakten Methoden implementieren.
  • Außerdem gibt es keine Möglichkeit und es ist nicht möglich, eine abstrakte Methode in einer finalen Klasse zu haben.

Ist es möglich, in Java von mehreren abstrakten Klassen zu erben?

  • Java unterstützt keine Mehrfachvererbung.
  • In Java können wir nur eine einzelne Klasse erweitern.
  • In Java können wir Schnittstellen aus vielen Quellen implementieren.