Java-Programmierung: Grundlagen und Anwendung von abstrakten Klassen
In der Welt der Java-Programmierung spielen abstrakte Klassen eine wichtige Rolle. Sie ähneln Schnittstellen (Interfaces), bringen jedoch eine interessante Eigenschaft mit sich: die Möglichkeit, Standardmethodenimplementierungen bereitzustellen. In diesem Blogbeitrag werden wir uns mit abstrakten Klassen in Java befassen, ihre Verwendung und einige wichtige Punkte, die Sie darüber wissen sollten.
Was ist eine abstrakte Klasse?
Eine abstrakte Klasse in Java ist eine Art von Klasse, die mit dem Schlüsselwort „abstract“ erstellt wird. Im Gegensatz zu regulären Klassen kann eine abstrakte Klasse sowohl abstrakte Methoden ohne Implementierung als auch Methoden mit Implementierungen enthalten. Der entscheidende Unterschied zu Schnittstellen besteht darin, dass abstrakte Klassen auch konkrete Methoden haben können.
Die Syntax einer abstrakten Klasse
Hier ist ein einfaches Beispiel einer abstrakten Klasse in Java:
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;
}
}
In diesem Beispiel sehen Sie die abstrakte Klasse „Person“. Sie enthält eine abstrakte Methode namens „work()“ und auch eine konkrete Methode „changeName()“. Beachten Sie, dass die abstrakte Methode „work()“ keine Implementierung hat.
Die Verwendung von abstrakten Klassen in Java
Abstrakte Klassen werden in Java hauptsächlich verwendet, um eine Basis für Unterklassen bereitzustellen. Diese Unterklassen erweitern die abstrakten Klassen, indem sie die abstrakten Methoden implementieren und die konkreten Methoden verwenden oder überschreiben.
Ein Beispiel für eine Unterklasse, die von der abstrakten Klasse „Person“ erbt, ist die Klasse „Employee“:
java
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("Nicht am Arbeiten");
}else{
System.out.println("Arbeitet als Mitarbeiter!!");
}
}
public static void main(String args[]){
Person student = new Employee("Dove", "Weiblich", 0);
Person employee = new Employee("Pankaj", "Männlich", 123);
student.work();
employee.work();
employee.changeName("Pankaj Kumar");
System.out.println(employee.toString());
}
Die Klasse „Employee“ erbt von „Person“ und implementiert die abstrakte Methode „work()“.
Wichtige Punkte zu abstrakten Klassen in Java
Es gibt einige wichtige Punkte, die Sie über abstrakte Klassen in Java wissen sollten:
- Das Schlüsselwort „abstract“ wird verwendet, um eine abstrakte Klasse zu erstellen.
- Abstrakte Klassen können nicht instanziiert werden.
- Das Schlüsselwort „abstract“ wird verwendet, um abstrakte Methoden ohne Implementierung zu erstellen.
- Wenn eine Klasse abstrakte Methoden enthält, muss die Klasse selbst ebenfalls als abstrakt markiert werden.
- Eine abstrakte Klasse kann auch ohne abstrakte Methoden erstellt werden.
- Wenn eine abstrakte Klasse keine Methodenimplementierungen enthält, ist es möglicherweise besser, eine Schnittstelle zu verwenden.
- Die Unterklasse einer abstrakten Klasse in Java muss alle abstrakten Methoden implementieren, es sei denn, die Unterklasse ist selbst auch abstrakt.
- Alle Methoden in einer Schnittstelle sind implizit abstrakt, es sei denn, es handelt sich um statische oder standardmäßige Methoden.
- Eine abstrakte Klasse in Java kann Schnittstellen implementieren, ohne die Implementierung der Schnittstellenmethoden bereitzustellen.
- Abstrakte Klassen dienen dazu, gemeinsame Methodenimplementierungen für alle Unterklassen bereitzustellen oder eine Standardimplementierung bereitzustellen.
- Abstrakte Klassen in Java können wie jede andere Klasse ausgeführt werden, wenn sie eine „main()“ Methode haben.
Das war eine Einführung in abstrakte Klassen in Java. Sie bieten eine leistungsstarke Möglichkeit, die Struktur und Funktionalität Ihrer Klassen hierarchisch zu organisieren und erleichtern die Wiederverwendung von Code. Wenn Sie weitere Fragen oder Anmerkungen haben, teilen Sie uns dies bitte in den Kommentaren mit.