Abstraction
Cette partie est en lien avec les interfaces, il est conseillée d'avoir déjà lu la partie sur celles-ci
L'abstraction peut apparaitre sous forme de classe, méthode, le but ici est de définir des méthodes de base et un corp sans devoir le réécrire pour chaque classe qui l'utilise
Il ne faut le confondre avec une interface qui elle veut forcer l'implementation de méthode dans un classe alors qu'ici on veut insérer des méthodes dans une classe
A la manière des interfaces, on applique une classe abstraite sur une autre classe avec extends
, bien que ce soit dans l'autre sens, notre classe ajoute du contenu a une classe abstraite
abstract class AbstractClass{
public String stringMethod(){
return "method";
}
}
public class Main extends AbstractClass{
public static void main(String[] args){}
}
Ceci nous permet d'accéder à stringMethod
par
new Main().stringMethod();
Comme dans les interfaces, on peut les écraser avec un décorateur
abstract class AbstractClass{
public String stringMethod(){
return "method";
}
}
public class Main extends AbstractClass{
public static void main(String[] args){}
@Override
public String stringMethod(){
return "overrided";
}
}
On peut forcer une extension à utiliser une méthode en la déclarant abstraite, elle doit alors être implémentée
abstract class AbstractClass{
public abstract void abstractMethod();
}
public class Main extends AbstractClass{
public static void main(String[] args){}
@Override
public void abstractMethod() {}
}