Runtime Polymorphism with Data Members

0

Witam, w wyniku dziedziczenia zmienne nie są nadpisywane, jednak nie do końca to do mnie przemawia. Mógłby ktoś lepiej opisać dlaczego wyświetlana jest zmienna z klasy podstawowej, mimo tego, że referencja a wskazuje na obiekt klasy pochodnej?

class A 
{ 
    int x = 10; 
} 
  
class B extends A 
{ 
    int x = 20; 
} 
  
public class Test 
{ 
    public static void main(String args[]) 
    { 
        A a = new B();  
  
        System.out.println(a.x); 
    } 
} 
2

W praktyce masz tam obie wartości:

        B b = new B();
        A a = b;
        System.out.println(a.x);
        System.out.println(((B) a).x);
        System.out.println(b.x);
        System.out.println(((A) b).x);

To tylko kwestia do którego pola się odnosisz. W praktyce w ogóle nie powinieneś tak robić ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1