public class ClassA {
int value = 50;
public void display(){
System.out.println("ClassA displaying value:"+ value);
}
}
public class ClassB extends ClassA {
int value = 25;
public void display(){
System.out.println("ClassB displaying value:"+ value);
}
}
public class Test {
public static void main(String[] args) {
ClassA objA = new ClassB();
ClassB objB = new ClassB();
System.out.println(objA.value); --> 50
System.out.println(objB.value); --> 25
objA.display(); --> ClassA Displaying value: 25
objB.display(); --> ClassB Displaying value: 25
}
}
Quelqu'un peut-il expliquer pourquoi objA est l'impression valeur superclasse 50.classe Super référence sur la variable membre et méthode
Dans primordial de la méthode, au moment de la compilation de la référence d'objet est ClassA et il recherche un affichage de méthode() en ClassA. Si cette méthode est disponible à ClassA, lors de l'exécution, l'objet réel créé est de classe B et la méthode display() dans ClassB remplace la méthode display() de ClassA.
Mais que se passe-t-il lorsque nous imprimons la propriété de classe "Value"?
ClassA objA = new ClassB();
System.out.println(objA.value);
Ici, la référence est ClassA et l'objet réel est de ClassB. Donc, je m'attends à la valeur de classB: 25. Mais la valeur: 50 de ClassA est en train d'imprimer.
S'il vous plaît corriger si je comprends mal ..
Merci à l'avance