Otázka: Vzhledem k tomu, že:
soukromé
metody nelze přepsat podtřídamifinále
metody nelze přepsat podtřídamifinále
metody umožňují rychlejší kód při kompilaci s optimalizací na(javac -O)
Moje otázky jsou: A: Jak podotknete, podtřídy nemusí přepsat Praxe deklarovat vše K zodpovězení otázky 1 tedy není třeba prohlašovat Pokud jde o otázku 2, optimalizační kompilátor a JVM mohou využít výhody Abychom odpověděli na otázku 2, ano, všichni kompilátoři zacházejí Zajímavější otázka: Budou všichni kompilátoři optimalizovat Poznámka: Naše diskuse o soukromém finále se vztahuje pouze na metody. S proměnnými soukromých konečných členů se zachází odlišně soukromé
metody finále
také?soukromé
metody jako finále
?soukromé
metody záměrné. Kromě toho finále
klíčové slovo říká kompilátoru, že podtřídy nemusí přepsat metodu bez ohledu na její úroveň přístupu. Od té doby soukromé
již znamená, že podtřída nemusí přepsat metodu, deklarovat a soukromé
metoda být finále
je nadbytečné. Vytvoření deklarace nezpůsobí problémy, ale od té doby také nic nedosáhne soukromé
s jsou považovány automaticky finále
. soukromé
metody finále
bude mít jeden vedlejší účinek. Každý začínající programátor Java, který narazí na váš kód, asimiluje vaše použití soukromé finále
myslet si to soukromé
s musí být deklarováno tímto způsobem. Budete tedy moci posoudit, kdo má a kdo nebyl v kontaktu s vaším kódem. Mohlo by to být zajímavé cvičení. soukromé
členů finále
. soukromé
metody a finále
metody. Vzhledem k tomu, že podtřídy nemusí tyto typy přepsat, není nutné za běhu provádět dynamickou vazbu. Podtřídy metodu nikdy nepotlačí, takže modul runtime vždy bude vědět, jakou metodu volat, aniž by prohledával hierarchii dědičnosti. Během kompilace se může optimalizující kompilátor dokonce rozhodnout vložit všechny soukromé
a finále
metody ke zlepšení výkonu. soukromé
metody jako finále
. Kompilátor žádné nepovolí soukromé
způsob, který má být přepsán. Podobně všechny kompilátory zabrání přepsání podtříd finále
metody. finále
s a soukromé
tak, aby byly vložené? Krátká odpověď je ne. Chování optimalizace bude záviset na kompilátoru a jeho nastavení.
Další informace o tomto tématu
- Chcete více? Viz Java Q&A Rejstřík pro celý katalog otázek a odpovědí
//www.javaworld.com/javaworld/javaqa/javaqa-index.html
Tento příběh: „Soukromý a konečný?“ byl původně publikován společností JavaWorld.