Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Abstrakte Java-Klasse und abstrakte Methoden

Abstrakte Java-Klasse und abstrakte Methoden

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

Abstrakte Java-Klasse

Die abstrakte Klasse in Java kann nicht instanziiert werden (wir können keine Objekte abstrakter Klassen erstellen). Wir verwenden den abstract Schlüsselwort zum Deklarieren einer abstrakten Klasse. Zum Beispiel

// 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 Methoden als auch abstrakte Methoden haben. Zum Beispiel

abstract class Language {

  // abstract method
  abstract void method1();

  // regular method
  void method2() {
    System.out.println("This is regular method");
  }
}

Um mehr über die nicht abstrakten Methoden zu erfahren, besuchen Sie Java-Methoden. Hier lernen wir abstrakte Methoden kennen.


Abstrakte Java-Methode

Eine Methode, die keinen Körper hat, wird als abstrakte Methode bezeichnet. Wir verwenden denselben abstract Schlüsselwort zum Erstellen abstrakter Methoden. Zum Beispiel

abstract void display();

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

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

// error
// class should be abstract
class Language {

  // abstract method
  abstract void method1();
}

Beispiel:Abstrakte Java-Klasse 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. Zum Beispiel

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

This is Java programming

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

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

obj.display();

Hier, obj ist das Objekt der untergeordneten Klasse Main . Wir rufen die Methode der abstrakten Klasse über das 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. Zum Beispiel

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

Bark bark
I can eat.

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 eine Unterklasse Dog geerbt aus der Oberklasse Animal . Hier die Unterklasse Dog stellt die Implementierung für die abstrakte Methode makeSound() bereit .

Wir haben dann das Objekt d1 verwendet des Hundes Klasse zum Aufrufen von Methoden makeSound() und eat() .

Hinweis :Wenn der Hund Klasse bietet nicht die Implementierung der abstrakten Methode makeSound() , Hund sollten ebenfalls als abstrakt deklariert werden. Dies liegt daran, dass die Unterklasse Dog erbt makeSound() von Tier .


Greift auf den Konstruktor abstrakter Klassen zu

Eine abstrakte Klasse kann Konstruktoren wie die reguläre Klasse haben. Und wir können auf den Konstruktor einer abstrakten Klasse aus der Unterklasse zugreifen, indem wir den super verwenden Stichwort. Zum Beispiel

abstract class Animal {
   Animal() {
      ….
   }
}

class Dog extends Animal {
   Dog() {
      super();
      ...
   }
}

Hier haben wir den super() verwendet innerhalb des Konstruktors von Dog um auf den Konstruktor von Animal zuzugreifen .

Beachten Sie, dass der super sollte immer die erste Anweisung des Unterklassenkonstruktors sein. Besuchen Sie das Java-Super-Schlüsselwort, um mehr zu erfahren.


Java-Abstraktion

Der Hauptzweck abstrakter Klassen und Methoden besteht darin, in Java Abstraktion zu erreichen.

Abstraktion ist ein wichtiges Konzept der objektorientierten Programmierung, das es uns ermöglicht, unnötige Details auszublenden und nur die benötigten Informationen anzuzeigen.

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

Ein praktisches Beispiel für Abstraktion können Motorradbremsen sein. Wir wissen, was Bremsen tun. Wenn wir die Bremse betätigen, hält das Motorrad an. Die Funktionsweise der Bremse bleibt uns jedoch verborgen.

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

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

Beispiel 3:Java-Abstraktion

abstract class MotorBike {
  abstract void brake();
}

class SportsBike extends MotorBike {
    
  // implementation of abstract method
  public void brake() {
    System.out.println("SportsBike Brake");
  }
}

class MountainBike extends MotorBike {
    
  // implementation of abstract method
  public void brake() {
    System.out.println("MountainBike Brake");
  }
}

class Main {
  public static void main(String[] args) {
    MountainBike m1 = new MountainBike();
    m1.brake();
    SportsBike s1 = new SportsBike();
    s1.brake();
  }
}

Ausgabe :

MountainBike Brake
SportsBike Brake

Im obigen Beispiel haben wir eine abstrakte Oberklasse MotorBike erstellt . Das MotorBike der Superklasse hat eine abstrakte Methode brake() .

Die brake() -Methode kann nicht innerhalb von MotorBike implementiert werden . Dies liegt daran, dass jedes Fahrrad eine andere Implementierung von Bremsen hat. Also alle Unterklassen von MotorBike hätte eine andere Implementierung von brake() .

Also die Implementierung von brake() in Motorrad wird verborgen gehalten.

Hier, MountainBike macht seine eigene Implementierung von brake() und SportsBike macht seine eigene Implementierung von brake() .

Hinweis :Wir können auch Schnittstellen verwenden, um in Java Abstraktion zu erreichen. Um mehr zu erfahren, besuchen Sie Java Interface.


Wichtige Punkte, die Sie sich merken sollten


Java

  1. Abstrakte C#-Klasse und -Methode
  2. Java-Variablen und Literale
  3. Java-Klasse und -Objekte
  4. Letztes Java-Schlüsselwort
  5. Java-Instanz des Operators
  6. Java verschachtelte und innere Klasse
  7. Verschachtelte statische Java-Klasse
  8. Anonyme Java-Klasse
  9. Java-Singleton-Klasse
  10. Java ObjectOutputStream-Klasse