En Java, il est très courant que les sous-classes signalent des erreurs lors de l'appel de méthodes surchargées. La surcharge fait référence à la situation dans laquelle plusieurs méthodes portant le même nom sont définies dans une classe mais avec des listes de paramètres différentes. Si une sous-classe souhaite appeler une méthode surchargée dans la classe parent, des erreurs de compilation se produisent parfois. Ensuite, j'utiliserai des exemples de code spécifiques pour illustrer les raisons pour lesquelles les sous-classes signalent des erreurs lors de l'appel de méthodes surchargées.
Supposons que nous ayons une classe parent ParentClass, qui définit deux méthodes surchargées :
public class ParentClass { public void printInfo(String str) { System.out.println("Printing String: " + str); } public void printInfo(int num) { System.out.println("Printing Integer: " + num); } }
Ensuite, nous créons une sous-classe ChildClass et essayons d'appeler la méthode surchargée dans la classe parent :
public class ChildClass extends ParentClass { public void printInfo(double val) { System.out.println("Printing Double: " + val); } public static void main(String[] args) { ChildClass child = new ChildClass(); child.printInfo("Hello"); // 这行代码会报错 } }
Dans le code ci-dessus, la sous-classe ChildClass hérite la classe parent ParentClass et définit une nouvelle méthode surchargée printInfo(double val). Dans la méthode principale, nous créons une instance enfant de ChildClass et essayons d'appeler la méthode printInfo(String str) dans la classe parent.
Cependant, lorsque nous essayons de compiler le code ci-dessus, nous recevrons l'erreur de compilation suivante :
Error: method printInfo in class ParentClass cannot be applied to given types; required: int found: java.lang.String
La raison de cette erreur est que lorsque Java appelle une méthode, il détermine la méthode spécifique à appeler en fonction du numéro et type de paramètres transmis. Dans ce cas, la sous-classe ChildClass essaie d'appeler la méthode printInfo(String str) dans la classe parent, mais comme cette méthode n'est pas surchargée dans la sous-classe, le compilateur recherchera la meilleure méthode correspondante et constatera que seule la méthode printInfo(int num) L'appel peut être terminé, mais printInfo(String str) est introuvable.
Afin de résoudre ce problème, nous pouvons remplacer la méthode surchargée dans la classe parent dans la sous-classe, ou appeler explicitement la méthode surchargée dans la classe parent. Par exemple :
public class ChildClass extends ParentClass { @Override public void printInfo(String str) { System.out.println("Overriding method in ChildClass: " + str); } public void callParentMethod(String str) { super.printInfo(str); // 显式调用父类中被重载的方法 } public static void main(String[] args) { ChildClass child = new ChildClass(); child.printInfo("Hello"); // 调用子类中重写的方法 child.callParentMethod("World"); // 显式调用父类中的重载方法 } }
En remplaçant les méthodes de la classe parent ou en appelant explicitement les méthodes de la classe parent, nous pouvons éviter les erreurs lorsque les sous-classes appellent des méthodes surchargées. De cette façon, vous pouvez mieux comprendre les raisons pour lesquelles les sous-classes signalent des erreurs lors de l'appel de méthodes surchargées et apprendre à résoudre ces problèmes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!