Diskuze: Zděděné soukromé metody
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 14 zpráv z 14.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
To co hledáš je virtuální/abstraktní metody. Popřípadě ještě termín tabulka virtuálních metod.
Ahoj, řeknu to jednoduše. Tady je zkrátka mezi Ruby a Javou rozdíl.
Je to napsané i v dokumentaci. Ruby volá private metody vždy v kontextu self, zato v Jave se volá metoda předka tudíž se volá private v kontextu předka. Pokud chceš v Jave dosáhnout stejného chování, správně jsi pochopil, že musíš použít protected. Mě osobně asi dává smysl obojí a každé má své pro a proti. Pokud se chceš dozvědět o této problematice víc, není nic spolehlivějšího než oficiální dokumentace https://docs.oracle.com/…control.html
A jedna poznámka na závěr, private metody se nikdy nedědí!
Ahoj, řeknu to jednoduše. Tady je zkrátka mezi Ruby a Javou rozdíl.
Je to napsané i v dokumentaci. Ruby volá private metody vždy v kontextu self, zato v Jave se volá metoda předka tudíž se volá private v kontextu předka. Pokud chceš v Jave dosáhnout stejného chování, správně jsi pochopil, že musíš použít protected. Mě osobně asi dává smysl obojí a každé má své pro a proti. Pokud se chceš dozvědět o této problematice víc, není nic spolehlivějšího než oficiální dokumentace https://docs.oracle.com/…control.html
A jedna poznámka na závěr, private metody se nikdy nedědí!
Omlouvám se, nějakou chybou se ten komentář odeslal 2x.
Bug report to David Hartinger
Tak jako dědí, ale když k nim nemáš přístup a dokonce můžeš bez problémů napsat do potomka úplně stejnou metodu bez konfliktu, tak to je jako kdyby tam vůbec nebyli, nemyslíš?
To ti to nedá žádný warning? V C# dostaneš warning a měl bys k signature přidat new. Jako tam nejsou, mas pravdu, ale ve skutečnosti tam jsou
No, warning Ti dá možná tak některé IDE, ale to neznamená, že to nezkompiluješ a nespustíš. (alespoň tedy v Jave)
Jo, sorry. Máš pravdu... Ono to hlásí, jen když jsou ty metody public. Každopádně warningy nejsou z IDE, ale z kompilátoru
Jo, já jsem to myslel tak, že warningy tam nejsou, jen Tě na to nějak upozorní IDE.
Private members třídy se opravdu nedědí, dědičnost se vztahuje jen na protected a public members.
Zobrazeno 14 zpráv z 14.