Polimorfilmu - dostęp do nowych metod dodanych w klasie dziedziczącej

0

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.

0

Nie, nie ma możliwości wywołania metody dodanej w klasie dziedziczącej. W końcu tworzysz obiekt klasy Super, więc możesz wywoływać tylko te metody, którymi ona dysponuje.
Pokaż przykład z książki.

0

Mój błąd, po ponownym tym razem znacznie dokłądniejsyzm przeczytaniu kodu, faktycznnidopatrzyłem nowego konstrukota bez polimorfilmu. I to właśnie dla tego obiektu była wywołana nowa metoda z klasy dziedziczącej.

Dzięki za pomoc.

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