La classe abstraite en Java est similaire à une interface, sauf qu’elle peut contenir une implémentation de méthode par défaut. Une classe abstraite peut avoir une méthode abstraite sans corps et elle peut également avoir des méthodes avec une implémentation. Le mot-clé abstract
est utilisé pour créer une classe et une méthode abstraite. Une classe abstraite en Java ne peut pas être instanciée. Une classe abstraite est principalement utilisée pour fournir une base aux sous-classes pour étendre et implémenter les méthodes abstraites, et pour remplacer ou utiliser les méthodes implémentées dans la classe abstraite.
Classe Abstraite en Java
Voici un exemple simple d’une Classe Abstraite en Java.
package com.journaldev.design;
//classe abstraite
public abstract class Person {
private String name;
private String gender;
public Person(String nm, String gen){
this.name=nm;
this.gender=gen;
}
//méthode abstraite
public abstract void work();
@Override
public String toString(){
return "Name="+this.name+"::Gender="+this.gender;
}
public void changeName(String newName) {
this.name = newName;
}
}
Remarquez que work()
est une méthode abstraite et n’a pas de corps. Voici un exemple de classe concrète étendant une classe abstraite en 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[]){
//codage en termes de classes abstraites
Person student = new Employee("Dove","Female",0);
Person employee = new Employee("Pankaj","Male",123);
student.work();
employee.work();
//utilisation de méthode implémentée dans la classe abstraite - héritage
employee.changeName("Pankaj Kumar");
System.out.println(employee.toString());
}
}
Notez que la sous-classe Employee hérite des propriétés et méthodes de la superclasse Person en utilisant l’héritage en Java. Remarquez également l’utilisation de l’annotation Override dans la classe Employee. Pour en savoir plus sur pourquoi nous devrions toujours utiliser l’annotation Override lors du remplacement d’une méthode.
Points importants sur les classes abstraites en Java
abstract
est utilisé pour créer une classe abstraite en Java.- Une classe abstraite en Java ne peut pas être instanciée.
- Nous pouvons utiliser le mot-clé
abstract
pour créer une méthode abstraite, une méthode abstraite n’a pas de corps. - Si une classe a des méthodes abstraites, alors la classe doit aussi être abstraite en utilisant le mot-clé abstract, sinon cela ne compilera pas.
- Il n’est pas nécessaire qu’une classe abstraite ait des méthodes abstraites. Nous pouvons marquer une classe comme abstraite même si elle ne déclare aucune méthode abstraite.
- Si une classe abstraite n’a pas d’implémentation de méthode, il est préférable d’utiliser une interface car Java ne prend pas en charge l’héritage de plusieurs classes.
- La sous-classe d’une classe abstraite en Java doit implémenter toutes les méthodes abstraites à moins que la sous-classe ne soit également une classe abstraite.
- Toutes les méthodes dans une interface sont implicitement abstraites, sauf si les méthodes de l’interface sont statiques ou par défaut. Les méthodes statiques et les méthodes par défaut dans les interfaces ont été ajoutées en Java 8, pour plus de détails, consultez Java 8 interface changes.
- Une classe abstraite Java peut implémenter des interfaces sans même fournir l’implémentation des méthodes de l’interface.
- Une classe abstraite Java est utilisée pour fournir une implémentation de méthode commune à toutes les sous-classes ou pour fournir une implémentation par défaut.
- Nous pouvons exécuter une classe abstraite en Java comme n’importe quelle autre classe si elle a une méthode
main()
.
C’est tout pour une classe abstraite en Java. Si j’ai omis quelque chose d’important, veuillez nous le faire savoir dans les commentaires.
Source:
https://www.digitalocean.com/community/tutorials/abstract-class-in-java