La différence entre la surcharge, l'héritage, la substitution et le polymorphisme :
1) L'héritage se produit lorsqu'une sous-classe obtient des membres de la classe parent.
2) La substitution est une méthode de réimplémentation de la classe parent après l'héritage.
3) La surcharge est une série de méthodes avec des paramètres différents et le même nom dans une classe.
4) Le polymorphisme vise à éviter un grand nombre de surcharges dans la classe parent, ce qui entraînerait une surcharge du code et une difficulté à maintenir.
Une déclaration intéressante que j'ai vue sur Internet est la suivante : l'héritage est une méthode permettant à une sous-classe d'utiliser une classe parent, tandis que le polymorphisme est une méthode permettant à une classe parent d'utiliser une sous-classe.
Les exemples suivants incluent ces quatre implémentations :
la classe Triangle étend la forme {
public int getSides() {
retourner 3 ;
}
}
la classe Rectangle étend la forme {
public int getSides(int i) {
je reviens;
}
}
classe publique Forme {
public booléen isSharp(){
renvoie vrai ;
}
public int getSides(){
renvoie 0 ;
}
public int getSides(Triangle tri){
retourner 3 ;
}
public int getSides(Rectangle rec){
retourner 4 ;
}
public static void main (String[] arguments) {
Triangle tri = nouveau Triangle();
System.out.println(« Le triangle est un type de Sharp ? » + tri.isSharp());
Forme forme = nouveau Triangle();
System.out.println("Ma forme a" + shape.getSides() + "côtés.");
}
}
Le rouge représente la surcharge, le vert l'écrasement, le bleu l'héritage, le rose le polymorphisme
Notez que les méthodes de la classe Triangle sont surchargées, tandis que les méthodes de la classe Rectangle sont surchargées.
En comparant les parties rouge et rose, vous pouvez découvrir les avantages du polymorphisme par rapport à la surcharge : si vous utilisez la surcharge, une méthode pour obtenir le nombre d'arêtes doit être surchargée dans la classe parent pour chaque sous-classe ; si vous utilisez le polymorphisme, alors la classe parent ; fournit uniquement une interface pour obtenir le nombre de côtés. Quant à l'obtention du nombre de côtés de quelle forme et comment l'obtenir, ils sont implémentés (réécrits) respectivement dans les sous-classes.