logo

Abstraktes Java-Schlüsselwort

Das Schlüsselwort abstract wird verwendet, um in Java eine Abstraktion zu erreichen. Es handelt sich um einen Nichtzugriffsmodifikator, der zum Erstellen abstrakter Klassen und Methoden verwendet wird.

Die Rolle einer abstrakten Klasse besteht darin, abstrakte Methoden zu enthalten. Es kann jedoch auch nicht-abstrakte Methoden enthalten. Die Methode, die mit dem Schlüsselwort abstract deklariert wird und keine Implementierung hat, wird als abstrakte Methode bezeichnet.

Syntax:-

 abstract class Employee { abstract void work(); } 

Hinweis – Wir können keine abstrakten Methoden in nicht abstrakten Klassen deklarieren.

Regeln des abstrakten Schlüsselworts

Verbote

  • Ein abstraktes Schlüsselwort kann nicht mit Variablen und Konstruktoren verwendet werden.
  • Wenn eine Klasse abstrakt ist, kann sie nicht instanziiert werden.
  • Wenn eine Methode abstrakt ist, enthält sie keinen Körper.
  • Wir können das Schlüsselwort abstract nicht mit verwenden Finale .
  • Wir können abstrakte Methoden nicht als deklarieren Privat .
  • Wir können abstrakte Methoden nicht als deklarieren statisch .
  • Eine abstrakte Methode kann nicht synchronisiert werden.

DOS

  • Ein abstraktes Schlüsselwort kann nur mit Klasse und Methode verwendet werden.
  • Eine abstrakte Klasse kann Konstruktoren und statische Methoden enthalten.
  • Wenn eine Klasse die abstrakte Klasse erweitert, muss sie auch mindestens eine der abstrakten Methoden implementieren.
  • Eine abstrakte Klasse kann die Hauptmethode und die Endmethode enthalten.
  • Eine abstrakte Klasse kann überladene abstrakte Methoden enthalten.
  • Wir können die lokale innere Klasse als abstrakt deklarieren.
  • Wir können die abstrakte Methode mit einer Throw-Klausel deklarieren.

Beispiele für abstrakte Schlüsselwörter

Beispiel 1: Abstrakte Klasse, die die abstrakte Methode enthält

 abstract class Vehicle { abstract void bike(); } class Honda extends Vehicle { @Override void bike() { System.out.println('Bike is running'); } } public class AbstractExample1 { public static void main(String[] args) { Honda obj=new Honda(); obj.bike(); } } 
Testen Sie es jetzt

Ausgabe:

 Bike is running 

Beispiel 2: Abstrakte Klasse, die die abstrakte und nicht abstrakte Methode enthält

 abstract class Vehicle { abstract void bike(); void car() { System.out.println('Car is running'); } } class Honda extends Vehicle { @Override void bike() { System.out.println('Bike is running'); } } public class AbstractExample2 { public static void main(String[] args) { Honda obj=new Honda(); obj.bike(); obj.car(); } } 
Testen Sie es jetzt

Ausgabe:

 Bike is running Car is running 

Beispiel 3: Abstrakte Klasse, die den Konstruktor enthält

 abstract class Vehicle { String msg; Vehicle(String msg) { this.msg=msg; } void display() { System.out.println(msg); } } class Honda extends Vehicle { Honda(String msg) { super(msg); } } public class AbstractExample3 { public static void main(String[] args) { Honda obj=new Honda('Constructor is invoked'); obj.display(); } } 
Testen Sie es jetzt

Ausgabe:

 Constructor is invoked 

Beispiel 4: Abstrakte Klasse mit überladenen abstrakten Methoden

 abstract class Vehicle { abstract void display(); abstract void display(String msg); } class Honda extends Vehicle { @Override void display() { System.out.println('abstract method is invoked'); } @Override void display(String msg) { System.out.println(msg); } } public class AbstractExample4 { public static void main(String[] args) { Honda obj=new Honda(); obj.display(); obj.display('overloaded abstract method is invoked'); } } 
Testen Sie es jetzt

Ausgabe:

 abstract method is invoked overloaded abstract method is invoked 

Beispiel 5: Innere abstrakte Klasse

 class Vehicle { abstract class Car { abstract void display(); } class Honda extends Car { @Override void display() { System.out.println('inner abstract class is invoked'); } } } public class AbstractExample5 { public static void main(String[] args) { Vehicle obj=new Vehicle(); Vehicle.Car c=obj.new Honda(); c.display(); } } 
Testen Sie es jetzt

Ausgabe:

 inner abstract class is invoked 

Beispiel 6: Verschachtelte abstrakte Klasse

 abstract class Vehicle { abstract class Car { abstract void display(); } } class Honda extends Vehicle { class FourWheller extends Car { @Override void display() { System.out.println('nested abstract class is invoked'); } } } public class AbstractExample6 { public static void main(String[] args) { Vehicle obj=new Honda(); Honda h=(Honda)obj; Honda.FourWheller fw=h.new FourWheller(); fw.display(); } } 
Testen Sie es jetzt

Ausgabe:

 nested abstract class is invoked