Otázka: Vzhľadom na to, že:
súkromné
metódy nemôžu byť prepísané podtriedamikonečné
metódy nemôžu byť prepísané podtriedamikonečné
metódy umožňujú rýchlejší kód pri kompilácii s optimalizáciami na(javac -O)
Moje otázky sú: A: Ako zdôrazňujete, podtriedy nemusia mať prednosť Nuž, prax deklarovania všetkých Na zodpovedanie otázky 1 teda nie je potrebné vyhlásiť Pokiaľ ide o otázku 2, optimalizačný kompilátor a JVM môžu využiť výhody Takže, aby som odpovedal na otázku 2, áno, všetci kompilátori zaobchádzajú Zaujímavejšia otázka: Optimalizujú sa všetky kompilátory Poznámka: Naša diskusia o súkromnom finále sa týka iba metód. S premennými súkromných konečných členov sa zaobchádza odlišne súkromné
metódy konečné
tiež?súkromné
metódy ako konečné
?súkromné
metódy podľa návrhu. Ďalej konečné
kľúčové slovo hovorí kompilátoru, že podtriedy nemôžu prepísať metódu bez ohľadu na jej úroveň prístupu. Odkedy súkromné
už znamená, že podtrieda nemusí prepísať metódu, vyhlásením a súkromné
metóda byť konečné
je nadbytočný. Urobenie vyhlásenia nebude robiť problémy, ale odvtedy tiež nič nedosiahne súkromné
sa automaticky zohľadňujú konečné
. súkromné
metódy konečné
bude mať jeden vedľajší účinok. Každý začínajúci programátor Java, ktorý sa stretne s vašim kódom, asimiluje vaše použitie súkromné finále
mysliac si to súkromné
s musí byť deklarovaná týmto spôsobom. Budete teda môcť posúdiť, kto má a kto nebol v kontakte s vašim kódom. Mohlo by sa to ukázať ako zaujímavé cvičenie. súkromné
členov konečné
. súkromné
metódy a konečné
metódy. Pretože podtriedy nemusia tieto typy prepísať, nie je potrebné robiť dynamické väzby za behu. Podtriedy metódu nikdy neprepíšu, takže modul runtime bude vždy vedieť, ktorú metódu má volať, bez toho, aby prehľadal hierarchiu dedičstva. Počas kompilácie sa môže optimalizujúci kompilátor dokonca rozhodnúť vložiť všetky súkromné
a konečné
metódy na zlepšenie výkonu. súkromné
metódy ako konečné
. Kompilátor nepovolí žiadne súkromné
spôsob, ktorý má byť prepísaný. Rovnako všetky kompilátory zabránia prepísaniu podtried konečné
metódy. konečné
s a súkromné
tak, aby boli vložené? Krátka odpoveď je nie. Optimalizačné správanie bude závisieť od prekladača a jeho nastavení.
Získajte viac informácií o tejto téme
- Chcieť viac? Viď Java Q&A Register pre celý katalóg otázok a odpovedí
//www.javaworld.com/javaworld/javaqa/javaqa-index.html
Tento príbeh „Súkromný a konečný?“ pôvodne vyšla vo vydavateľstve JavaWorld.