Java Abstract Class und Methode (mit Beispiel)

In diesem Tutorial lernen wir anhand von Beispielen abstrakte Java-Klassen und -Methoden kennen. Wir werden auch etwas über Abstraktion in Java lernen.

Java Abstract Class

Die abstrakte Klasse in Java kann nicht instanziiert werden (wir können keine Objekte abstrakter Klassen erstellen). Wir verwenden das abstractSchlüsselwort, um eine abstrakte Klasse zu deklarieren. Beispielsweise,

 // create an abstract class abstract class Language ( // fields and methods )… // try to create an object Language // throws an error Language obj = new Language(); 

Eine abstrakte Klasse kann sowohl reguläre als auch abstrakte Methoden haben. Beispielsweise,

 abstract class Language ( // abstract method abstract void method1(); // regular method void method2() ( System.out.println("This is regular method"); ) )

Informationen zu den nicht abstrakten Methoden finden Sie unter Java-Methoden. Hier lernen wir abstrakte Methoden kennen.

Java Abstract Method

Eine Methode, die keinen Körper hat, wird als abstrakte Methode bezeichnet. Wir verwenden dasselbe abstractSchlüsselwort, um abstrakte Methoden zu erstellen. Beispielsweise,

 abstract void display();

Hier display()ist eine abstrakte Methode. Der Körper von display()wird ersetzt durch ;.

Wenn eine Klasse eine abstrakte Methode enthält, sollte die Klasse als abstrakt deklariert werden. Andernfalls wird ein Fehler generiert. Beispielsweise,

 // error // class should be abstract class Language ( // abstract method abstract void method1(); )

Beispiel: Java Abstract Class und Methode

Obwohl abstrakte Klassen nicht instanziiert werden können, können wir daraus Unterklassen erstellen. Wir können dann über das Objekt der Unterklasse auf Mitglieder der abstrakten Klasse zugreifen. Beispielsweise,

 abstract class Language ( // method of abstract class public void display() ( System.out.println("This is Java Programming"); ) ) class Main extends Language ( public static void main(String() args) ( // create an object of Main Main obj = new Main(); // access method of abstract class // using object of Main class obj.display(); ) )

Ausgabe

 Dies ist Java-Programmierung

Im obigen Beispiel haben wir eine abstrakte Klasse namens Sprache erstellt. Die Klasse enthält eine reguläre Methode display().

Wir haben die Hauptklasse erstellt, die die abstrakte Klasse erbt. Beachten Sie die Aussage,

 obj.display();

Hier ist obj das Objekt der untergeordneten Klasse Main. Wir rufen die Methode der abstrakten Klasse mit dem Objekt obj auf.

Abstrakte Methoden implementieren

Wenn die abstrakte Klasse eine abstrakte Methode enthält, müssen alle von der abstrakten Oberklasse geerbten untergeordneten Klassen die Implementierung der abstrakten Methode bereitstellen. Beispielsweise,

 abstract class Animal ( abstract void makeSound(); public void eat() ( System.out.println("I can eat."); ) ) class Dog extends Animal ( // provide implementation of abstract method public void makeSound() ( System.out.println("Bark bark"); ) ) class Main ( public static void main(String() args) ( // create an object of Dog class Dog d1 = new Dog(); d1.makeSound(); d1.eat(); ) )

Ausgabe

 Rinde Rinde kann ich essen.

Im obigen Beispiel haben wir eine abstrakte Klasse Animal erstellt. Die Klasse enthält eine abstrakte Methode makeSound()und eine nicht abstrakte Methode eat().

Wir haben einen Hund der Unterklasse von der Oberklasse Animal geerbt. Hier stellt die Unterklasse Dog die Implementierung für die abstrakte Methode bereit makeSound().

Wir haben dann das Objekt d1 der Dog-Klasse verwendet, um Methoden makeSound()und aufzurufen eat().

Hinweis : Wenn die Dog-Klasse die Implementierung der abstrakten Methode nicht bereitstellt makeSound(), sollte Dog auch als abstrakt deklariert werden. Dies liegt daran, dass die Unterklasse Hund makeSound()von Animal erbt .

Zugriff auf den Konstruktor abstrakter Klassen

Eine abstrakte Klasse kann Konstruktoren wie die reguläre Klasse haben. Und wir können mit dem superSchlüsselwort aus der Unterklasse auf den Konstruktor einer abstrakten Klasse zugreifen . Beispielsweise,

 abstract class Animal ( Animal() (… . ) ) class Dog extends Animal ( Dog() ( super();… ) )

Hier haben wir das super()Innere des Konstruktors von Dog verwendet, um auf den Konstruktor des Tieres zuzugreifen.

Beachten Sie, dass dies superimmer die erste Anweisung des Unterklassenkonstruktors sein sollte. Besuchen Sie Java Super Keyword, um mehr zu erfahren.

Java-Abstraktion

Die Hauptanwendung von abstrakten Klassen und Methoden besteht darin, eine Abstraktion in Java zu erreichen.

Abstraktion ist ein wichtiges Konzept der objektorientierten Programmierung, mit dem wir unnötige Details verbergen und nur die benötigten Informationen anzeigen können.

Auf diese Weise können wir die Komplexität verwalten, indem wir Details mit einer einfacheren Idee auf höherer Ebene weglassen oder ausblenden.

Ein praktisches Beispiel für Abstraktion können Motorradbremsen sein. Wir wissen, was Bremse macht. Wenn wir die Bremse betätigen, stoppt das Motorrad. Die Funktion der Bremse bleibt uns jedoch verborgen.

Der Hauptvorteil des Versteckens der Funktion der Bremse besteht darin, dass der Hersteller die Bremse jetzt für verschiedene Motorräder unterschiedlich implementieren kann. Die Bremse ist jedoch dieselbe.

Nehmen wir ein Beispiel, das uns hilft, die Java-Abstraktion besser zu verstehen.

Beispiel 3: Java-Abstraktion

 abstract class Animal ( abstract void makeSound(); ) class Dog extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Bark bark."); ) ) class Cat extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Meows "); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.makeSound(); Cat c1 = new Cat(); c1.makeSound(); ) )

Ausgabe :

 Rinde Rinde Miau

Im obigen Beispiel haben wir ein Tier der Oberklasse erstellt. Das Tier der Oberklasse hat eine abstrakte Methode makeSound().

Die makeSound()Methode kann nicht in Animal implementiert werden. Das liegt daran, dass jedes Tier unterschiedliche Geräusche macht. Alle Unterklassen von Animal hätten also eine unterschiedliche Implementierung von makeSound().

So wird die Implementierung von makeSound()in Animal verborgen gehalten.

Hier macht Dog seine eigene Implementierung von makeSound()und Cat macht seine eigene Implementierung von makeSound().

Hinweis : Wir können auch Schnittstellen verwenden, um eine Abstraktion in Java zu erreichen. Weitere Informationen finden Sie unter Java Interface.

Wichtige Punkte, an die Sie sich erinnern sollten

  • Wir verwenden das abstractSchlüsselwort, um abstrakte Klassen und Methoden zu erstellen.
  • Eine abstrakte Methode hat keine Implementierung (Methodenkörper).
  • Eine Klasse mit abstrakten Methoden sollte ebenfalls abstrakt sein.
  • Wir können keine Objekte einer abstrakten Klasse erstellen.
  • Um Features einer abstrakten Klasse zu implementieren, erben wir Unterklassen von dieser und erstellen Objekte der Unterklasse.
  • Eine Unterklasse muss alle abstrakten Methoden einer abstrakten Klasse überschreiben. Wenn die Unterklasse jedoch als abstrakt deklariert ist, müssen abstrakte Methoden nicht überschrieben werden.
  • Wir können auf die statischen Attribute und Methoden einer abstrakten Klasse zugreifen, indem wir die Referenz der abstrakten Klasse verwenden. Beispielsweise,
     Animal.staticMethod();

Interessante Beiträge...