Spørgsmål: I betragtning af at:
privat
metoder kan ikke tilsidesættes af underklasserendelig
metoder kan ikke tilsidesættes af underklasserendelig
metoder giver hurtigere kode, når de kompileres med optimeringer på(javac -O)
Mine spørgsmål er: EN: Som du påpeger, tilsidesætter underklasser muligvis ikke Nå, den praksis at erklære alt Så for at besvare spørgsmål 1 er der ingen grund til at erklære Hvad angår spørgsmål 2 kan en optimeringscompiler og JVM drage fordel af Så for at besvare spørgsmål 2, ja, vil alle kompilatorer behandle Et mere interessant spørgsmål: Vil alle kompilatorer optimeres Bemærk: Vores diskussion af privatfinalen gælder kun for metoder. Private endelige medlemsvariabler behandles forskelligt privat
metoder endelig
såvel?privat
metoder som endelig
?privat
metoder ved design. Desuden er den endelig
nøgleord fortæller kompilatoren, at underklasser muligvis ikke tilsidesætter en metode uanset dens adgangsniveau. Siden privat
indebærer allerede, at en underklasse muligvis ikke tilsidesætter en metode, der erklærer en privat
metode at være endelig
er overflødig. At afgive erklæringen vil ikke medføre problemer, men det vil heller ikke udrette noget, da privat
s overvejes automatisk endelig
. privat
metoder endelig
vil have en bivirkning. Enhver nybegynder Java-programmør, der støder på din kode, vil assimilere din brug af privat finale
, tænker det privat
s skal erklæres på denne måde. Så du vil være i stand til at bedømme, hvem der har og ikke har været i kontakt med din kode. Det kan vise sig at være en interessant øvelse. privat
medlemmer endelig
. privat
metoder og endelig
metoder. Da underklasser muligvis ikke tilsidesætter disse typer, er der ikke behov for at udføre dynamisk binding ved kørsel. Underklasser tilsidesætter aldrig metoden, så kørselstiden ved altid, hvilken metode der skal kaldes uden at søge på arvshierarkiet. Under kompilering kan en optimerings kompilator endda vælge at integrere alle privat
og endelig
metoder til forbedring af ydeevnen. privat
metoder som endelig
. Compileren tillader ikke nogen privat
metode, der skal tilsidesættes. Ligeledes forhindrer alle kompilatorer underklasser i at tilsidesætte endelig
metoder. endelig
s og privat
s så de er inline? Det korte svar er nej. Optimeringsadfærd afhænger af compileren og dens indstillinger.
Lær mere om dette emne
- Ønsker mere? Se Java Q&A Indeks for det fulde Q&A katalog
//www.javaworld.com/javaworld/javaqa/javaqa-index.html
Denne historie, "Privat og endelig?" blev oprindeligt udgivet af JavaWorld.