J'ai l'exercice suivant concernant l'héritage et les méthodes de substitution, et la question est pourquoi la méthode 'System.out.println (f1)' dans la méthode 'initialize()' dans la classe parente est appelée avec param '0', et ce qu'il faut faire pour cela sera appelé avec le paramètre '6'. S'il vous plaît, aidez-moi à le comprendre. Merci d'avance.Java Inheritance et programme de remplacement de méthode
public class Solution {
public static void main(String[] args) {
new B(6);
}
public static class A {
private int f1 = 7;
public A(int f1) {
this.f1 = f1;
initialize();
}
protected void initialize() {
System.out.println(f1);
}
}
public static class B extends A {
protected int f1 = 3;
public B(int f1) {
super(f1);
this.f1 += f1;
initialize();
}
protected void initialize() {
System.out.println(f1);
}
}
}
' initialize' n'a pas de * paramètres * ... et vous ne le surchargez pas dans 'B' car c'est une méthode privée. On ne sait pas exactement ce que vous attendez et pourquoi, pour être honnête, mais le fait que vous ayez deux champs avec le même nom ne fera qu'ajouter à la confusion. –