Aktywne Wpisy
Nie-wazne1 +10
Powie mi ktos dlaczego w Krakowie w okolicach rynku slyszec w wiekszosci ukrainski jezyk zamiast Polskiego. Angielski to nie dziwne bo turysci. Skad ci ukraincy maja pieniadze na drogie ciuchy czy jedzenie w centrum? Poza tym oni tak glosno ******** ze musza wszyscy wokolo wiedziec ze pochodza z panstwa ktore ledwo co powstalo I juz chce wszystkimi rzadzic. Wy Polacy naprawde nie widzicie ze oni wam na glowe wychodza. Przyjezdzaja tutaj I
![MackaCthulhu](https://wykop.pl/cdn/c3397992/MackaCthulhu_s86luvoVV5,q60.jpg)
NATO atakuje. Putin:
- Ogłasza kapitulację 46.3% (148)
- Rozpoczyna zagładę nuklearną 53.8% (172)
Czyli podklasa dziedziczy metody które mogą działać na nieodziedziczonych polach.
Rozumiem, że gdy tworzy się instancja podklasy to tworzy się również instancja nadklasy (albo jawnie
super
, albo niejawne dodanie wywołania bezargumentowego konstruktora nadklasy)Czy gdy wywołuje
childObject.parentMethod()
i metoda potrzebuje prywatnych składowych nadklasy to w tych przypadkach niejawnie odwołuje się do instancji nadklasy za pomocą czegoś w stylusuper.privateMember
?Chodzi mi o to, że taka metoda
parentMethod()
powinna mieć aktualny kontekst instancji podklasy (np. aktualne wartości odziedziczonych pól w podklasie) i prywatny kontekst instancji nadklasy. Czyli to by implikowało, że podklasa musi mieć jakieś odniesienie do instancji nadklasy, które jest dostepne dla kompilatora ale nie do piszącego kod w podklasie.#java #naukaprogramowania #programowanie
Instancja jest jedna, tylko prywatne pola są po prostu niewidoczne z punktu widzenia klasy (czyli z ciała klasy i ciała metod), która dziedziczy. Wywołanie metody childObject.parentMethod() wywołuje bezpośrednio metodę nadklasy (nawet jeśli masz referencję typu podklasy) - zakładam tu oczywiście, że nie przedefiniowałeś tej samej metody w podklasie, bo wtedy zachowanie jest trochę bardziej skomplikowane.
Fizycznie w pamięci w obiekcie klasy dziedziczącej te prywatne pola klasy nadrzędnej są. Nawet, jak nie odwołujesz się do nich z żadnej nieprywatnej metody.
Natomiast dostępu do nich z klasy dziedziczącej nie masz, chyba, że zrobisz jakeiś metody na to pozwalające w klasie nadrzędnej.
IMHO ten opis jest z dupy, bo sugeruje, że te pola się pojawiają
Zmylił mnie cytowany fragment i to, że jest zawsze wywoływany jest konstruktor nadklasy.
Czyli konstruktor nadklasy jest wywoływany po to by zainicjalizować odziedziczone składowe w podklasie (nie utworzy tymczasowo obiektu nadklasy z zainicjalizowanymi składowymi które dopiero wtedy dziedziczę)?