Abstracte klasse in Java is vergelijkbaar met een interface, behalve dat het standaardmethode-implementatie kan bevatten. Een abstracte klasse kan een abstracte methode zonder lichaam hebben en het kan ook methoden met implementatie hebben. Het trefwoord abstract
wordt gebruikt om een abstracte klasse en methode te creëren. Een abstracte klasse in Java kan niet geïnstantieerd worden. Een abstracte klasse wordt meestal gebruikt om een basis te bieden voor subklassen om de abstracte methoden uit te breiden en te implementeren, en de geïmplementeerde methoden in de abstracte klasse te overschrijven of te gebruiken.
Abstracte Klasse in Java
Hier is een eenvoudig voorbeeld van een abstracte klasse in Java.
package com.journaldev.design;
//abstracte klasse
public abstract class Person {
private String name;
private String gender;
public Person(String nm, String gen){
this.name=nm;
this.gender=gen;
}
//abstracte methode
public abstract void work();
@Override
public String toString(){
return "Name="+this.name+"::Gender="+this.gender;
}
public void changeName(String newName) {
this.name = newName;
}
}
Merk op dat work()
een abstracte methode is en geen lichaam heeft. Hier is een voorbeeld van een concrete klasse die een abstracte klasse uitbreidt in 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("Not working");
}else{
System.out.println("Working as employee!!");
}
}
public static void main(String args[]){
//codering in termen van abstracte klassen
Person student = new Employee("Dove","Female",0);
Person employee = new Employee("Pankaj","Male",123);
student.work();
employee.work();
//gebruik van methode geïmplementeerd in abstracte klasse - overerving
employee.changeName("Pankaj Kumar");
System.out.println(employee.toString());
}
}
Merk op dat de subklasse Employee de eigenschappen en methoden van de superklasse Persoon erft met behulp van erfenis in java. Let ook op het gebruik van Override annotatie in de klasse Employee. Lees meer over waarom we altijd de Override-annotatie moeten gebruiken bij het overschrijven van een methode.
Belangrijke punten bij abstracte klasse in Java
- Het sleutelwoord
abstract
wordt gebruikt om een abstracte klasse in java te maken. - Een abstracte klasse in java kan niet geïnstantieerd worden.
- We kunnen het sleutelwoord
abstract
gebruiken om een abstracte methode te maken, een abstracte methode heeft geen body. - Als een klasse abstracte methoden heeft, moet de klasse ook abstract zijn met het sleutelwoord abstract, anders zal het niet compileren.
- Het is niet nodig voor een abstracte klasse om abstracte methode te hebben. We kunnen een klasse als abstract markeren, zelfs als het geen abstracte methoden declareert.
- Als een abstracte klasse geen methodenimplementatie heeft, is het beter om een interface te gebruiken omdat java geen meervoudige klaserfenis ondersteunt.
- De subklasse van een abstracte klasse in java moet alle abstracte methoden implementeren, tenzij de subklasse ook een abstracte klasse is.
- Alle methoden in een interface zijn impliciet abstract, tenzij de interfacemethoden statisch of standaard zijn. Statische methoden en standaardmethoden in interfaces zijn toegevoegd in Java 8, voor meer details lees Java 8 interface wijzigingen.
- Een Java abstracte klasse kan interfaces implementeren zonder zelfs de implementatie van interfacemethoden te bieden.
- Een Java abstracte klasse wordt gebruikt om een gemeenschappelijke methode-implementatie te bieden aan alle subklassen of om een standaardimplementatie te bieden.
- We kunnen een abstracte klasse in Java uitvoeren zoals elke andere klasse als deze een
main()
-methode heeft.
Dat is alles voor een abstracte klasse in Java. Als ik iets belangrijks heb gemist, laat het ons dan weten via opmerkingen.
Source:
https://www.digitalocean.com/community/tutorials/abstract-class-in-java