Taki przykłąd:
class Super
{
public int fild =0;
public int getFild(){return fild;};
}
//-------------------------------
class Sub extends Super
{
public int fild=1;
public int getFild(){return fild;};
public int getX(){return x;};
public int x=10;
}
//---------------------------------
public class Main
{
public static void main(String[] args)
{
Super sup = new Sub();
System.out.println("sup.fild= "+sup.fild+ //Pole fild w klasie bazowej
" sup.getFild()= "+sup.getFild() //Pole fild w klasie własnej
//sup.getX();
);
}
}
Chodzi i o ostatni wiersz, czyli: sup.getX();
Czy przy zastosowaniu polimorfizmu (Super sup = new Sub();), nie mam dostępu do nowych metod dodanych w klasie dziedziczącej? Kompiletor zwraca mi błąd przy sup.getX().
Jest to tym bardziej dziwne ponieważ w książce z której się uczę mam analogiczny przykład i jest wywołanie metody dodanej w klasie dziedziczącej (przy zastosowaniu polimorfizmu) i wszystko działa.
Nie mam pomysłów dlaczego wywali mi ten błąd.
Proszę o podpowiedz.