Czołem wszystkim. Czy ktoś mnie wyjaśni w jaki sposób to działa?:
public class Program {
public static void main(String[] args) {
Integer liczba = 15;
Object ala = liczba;
System.out.println(ala);
}
}
Wynik to oczywiście liczba 15. Podtypowanie na obiekt to praktyka nagminna przed typami sparametryzowanymi (generics (dzięki ci za nie Panie)) no i ok, ALE zgodnie z zasadami polimorfizmu klasa bazowa "widzi" podczas przypisania tylko metody i pola klasy pochodnej jeżeli sama je posiada. Podczas przypisania referencji w metodę bazową są "wtłaczane" dane z odpowiednich pól metody pochodnej.
Jeżeli klasa Object nie ma pola przechowującego typ danych z klasy pochodnej (w tym wypadku int(eger), ale może to być dowolny typ danych zwracany przez dowolną klasę) w jaki sposób jest w stanie obsłużyć to zagadnienie i zwrócić wartość?
Szukałem odpowiedzi na to zgoła filozoficzne zagadnienie w książce H. Shildta, w wielu dobrych kursach internetowych, wikipedii, a nawet w dokumentacji javy na stronie oracle i nic nie znalazłem, co może sugerować, że odpowiedź jest tak banalna i oczywista, że nikt nie zaprząta sobie tym głowy? Jak to działa??