Eine abstrakte Klasse in Java ähnelt einem Interface, außer dass sie eine Standardmethodenimplementierung enthalten kann. Eine abstrakte Klasse kann eine abstrakte Methode ohne Körper haben und sie kann auch Methoden mit Implementierung haben. Das Schlüsselwort abstract
wird verwendet, um eine abstrakte Klasse und Methode zu erstellen. Eine abstrakte Klasse in Java kann nicht instanziiert werden. Eine abstrakte Klasse wird meistens verwendet, um eine Basis für Unterklassen zu bieten, um die abstrakten Methoden zu erweitern und zu implementieren und die implementierten Methoden in der abstrakten Klasse zu überschreiben oder zu nutzen.
Abstrakte Klasse in Java
Hier ist ein einfaches Beispiel für eine abstrakte Klasse in Java.
package com.journaldev.design;
//abstrakte Klasse
public abstract class Person {
private String name;
private String gender;
public Person(String nm, String gen){
this.name=nm;
this.gender=gen;
}
//abstrakte Methode
public abstract void work();
@Override
public String toString(){
return "Name="+this.name+"::Gender="+this.gender;
}
public void changeName(String newName) {
this.name = newName;
}
}
Beachten Sie, dass work()
eine abstrakte Methode ist und keinen Körper hat. Hier ist ein Beispiel für eine konkrete Klasse, die eine abstrakte Klasse in Java erweitert.
package com.journaldev.design;
public class Employee extends Person {
private int empId;
public Employee(String nm, String gen, int id) {
super(nm, gen);
this.empId=id;
}
@Override
public void work() {
if(empId == 0){
System.out.println("Not working");
}else{
System.out.println("Working as employee!!");
}
}
public static void main(String args[]){
//Programmieren in Bezug auf abstrakte Klassen
Person student = new Employee("Dove","Female",0);
Person employee = new Employee("Pankaj","Male",123);
student.work();
employee.work();
//Verwendung der in der abstrakten Klasse implementierten Methode - Vererbung
employee.changeName("Pankaj Kumar");
System.out.println(employee.toString());
}
}
Beachten Sie, dass die Unterklasse „Employee“ die Eigenschaften und Methoden der Oberklasse „Person“ mit Hilfe von Vererbung in Java erbt. Beachten Sie auch die Verwendung der Override-Annotation in der Klasse „Employee“. Lesen Sie mehr, um zu erfahren, warum wir immer die Override-Annotation verwenden sollten, wenn wir eine Methode überschreiben.
Wichtige Punkte zu abstrakten Klassen in Java
- Mit dem Schlüsselwort „abstract“ wird eine abstrakte Klasse in Java erstellt.
- Eine abstrakte Klasse in Java kann nicht instanziiert werden.
- Wir können das Schlüsselwort „abstract“ verwenden, um eine abstrakte Methode zu erstellen, eine abstrakte Methode hat keinen Körper.
- Wenn eine Klasse abstrakte Methoden hat, muss die Klasse auch abstrakt sein und das Schlüsselwort „abstract“ verwenden, sonst wird es nicht kompiliert.
- Es ist nicht notwendig, dass eine abstrakte Klasse abstrakte Methoden hat. Wir können eine Klasse als abstrakt markieren, auch wenn sie keine abstrakten Methoden deklariert.
- Wenn eine abstrakte Klasse keine Methodenimplementierung hat, ist es besser, ein Interface zu verwenden, da Java keine Mehrfachvererbung von Klassen unterstützt.
- Die Unterklasse einer abstrakten Klasse in Java muss alle abstrakten Methoden implementieren, es sei denn, die Unterklasse ist selbst auch eine abstrakte Klasse.
- Alle Methoden in einem Interface sind implizit abstrakt, es sei denn, die Interface-Methoden sind statisch oder standardmäßig. Statische Methoden und Standardmethoden in Interfaces wurden in Java 8 hinzugefügt, für weitere Details lesen Sie Java 8 Schnittstellenänderungen.
- Java Abstract-Klasse kann Interfaces implementieren, ohne sogar die Implementierung der Interface-Methoden bereitzustellen.
- Java Abstract-Klasse wird verwendet, um eine gemeinsame Methodenimplementierung für alle Unterklassen bereitzustellen oder eine Standardimplementierung bereitzustellen.
- Wir können eine abstrakte Klasse in Java wie jede andere Klasse ausführen, wenn sie die
main()
-Methode hat.
Das ist alles für eine abstrakte Klasse in Java. Wenn ich etwas Wichtiges übersehen habe, lassen Sie es uns bitte über Kommentare wissen.
Source:
https://www.digitalocean.com/community/tutorials/abstract-class-in-java