A Java, a Final, a Final és a Finalize közötti különbség
Tartalom
- Összehasonlító táblázat
- A végleges meghatározása
- Végleges változó
- Végső módszerek
- Záró osztály
- A véglegesítés meghatározása
- Következtetés:
A „végleges, végül és véglegesítés” szavak a Java nyelvén rejtenek. Mindegyikük eltérő működést biztosít. Az alapvető különbség a végleges és a véglegesítés között az végső hozzáférés-módosító, végül egy blokk és véglegesítése egy objektumosztály egyik módszere. Van néhány más különbség a végleges, a végleges és a véglegesítés között, amelyeket az összehasonlítási táblázat ismertet.
- Összehasonlító táblázat
- Meghatározás
- Főbb különbségek
- Következtetés
Összehasonlító táblázat
Az összehasonlítás alapja | Végső | Végül | Lezárás |
---|---|---|---|
Alapvető | A Final egy "kulcsszó" és "hozzáférés-módosító" Java-ban. | Végül egy "blokk" a Java-ban. | A véglegesítés egy "módszer" a Java-ban. |
Alkalmazható | A Final egy osztályra, változóra és módszerre alkalmazható kulcsszó. | Végül egy olyan blokk, amely mindig társul a try and catch blokkhoz. | Az finalize () egy objektumokra alkalmazható módszer. |
Dolgozó | (1) A végső változó állandóvá válik, és nem lehet hozzárendelni. (2) A végső módszert a gyermekosztály felülbírálja. (3) A döntő osztály nem hosszabbítható meg. | "Végül" blokk, tisztítsa meg a "try" blokkban használt erőforrásokat. | A véglegesítési módszer végrehajtja az objektumhoz kapcsolódó tevékenységek megsemmisítését megelőzően. |
Végrehajtás | A végleges módszer a hívása után kerül végrehajtásra. | A "Végül" blokk közvetlenül a "try-catch" blokk végrehajtása után fut. | A finalize () metódus közvetlenül az objektum megsemmisítése előtt hajtódik végre. |
A végleges meghatározása
Az „utolsó” kulcsszó a Java-ban. Ez egy hozzáférés-módosító. Az „utolsó” kulcsszó alkalmazható az osztályokra, módszerekre és változókra. Nézzük meg, hogyan működik mindegyikükkel.
Végleges változó
- Ha egy végső kulcsszót alkalmaznak a változóra, akkor azt nem lehet tovább módosítani.
- A végső változót inicializálni kell, amikor deklarálják.
- Egy általános kódolási konvencióban a végső változókat FELKÖZÖS formában deklarálják.
- A végső változó nem foglal el memóriát egy példányonként.
Végső módszerek
- Ha az osztályban alkalmazott módszert véglegesnek nyilvánítják, akkor az alosztálya nem bírálhatja felül.
- A véglegesnek nyilvánított kisméretű módszereket a fordító „inline” -re teheti, amely csökkenti a funkcióhívás általános költségeit és növeli a teljesítményjavításokat.
- A felülbírált módszerek meghívása dinamikusan oldódik meg, de ha egy módszert véglegesnek nyilvánítanak, akkor azt nem lehet felülbírálni. Ezért a függvényhívás fordítási időben oldható meg.
A osztály {final void meth () {System.out.ln ("Ez egy végleges módszer."); }} A B osztály kiterjeszti a {void meth () {// A B osztály nem örökölheti az A osztály módszerét. System.out.ln ("Nem írja felül"); }}
Záró osztály
- Ha egy osztályt véglegesnek nyilvánítanak, akkor azt egyetlen alosztály sem örökli.
- Az osztály véglegesnek nyilvánítása automatikusan minden módszert véglegesnek nyilvánít.
- Az osztályt nem lehet absztraktnak és véglegesnek egyaránt kijelenteni.
A végső osztály {// ...} B osztály kiterjeszti az A osztályt {// B osztály nem örökölheti az A osztályt ... ...}
- A Java-ban az „végül” egy olyan blokk, amelyet mindig társítanak a try / catch blokkhoz.
- A „végül” blokk a try / catch blokk után és a try / catch blokkot követő kód előtt hajtódik végre.
- A „végül” blokk végrehajtja függetlenül attól, hogy a kivételt eldobják-e vagy sem.
- Ha kivétel történik, és egyetlen fogási blokk sem felel meg a kivételnek, akkor a „végül” blokk kerül végrehajtásra.
- Amikor egy módszer visszatér a hívó félhez a próbálkozás / elkapás blokkból egy nem fogott kivétel vagy kifejezett visszatérési nyilatkozat útján, akkor a „végül” blokk kerül végrehajtásra, mielőtt a módszer visszatérne a hívóhoz.
- A „végül” blokk az erőforrások megtisztításához vagy a „try” blokkban használt memória felszabadításához szolgál.
- A „végül” mondat nem kötelező, de jó gyakorlat, ha a try / catch blokk után végül blokkot írunk.
osztályEgyszerű példája {// Ez a módszer kivételt jelenít meg a módszerből. statikus érvénytelen procA () {próbáld {System.out.ln ("procA belsejében"); dobjon új RuntimeException ("demo"); } végül {System.out.ln ("procAs végül"); }} // Visszatérés egy próbablokkból. statikus érvénytelen procB () {próbáld {System.out.ln ("procB belsejében"); Visszatérés; } végül {System.out.ln ("procBs végül"); }} // A próbablokkot normál módon hajtsa végre. statikus érvénytelen procC () {próbáld {System.out.ln ("procC belül"); } végül {System.out.ln ("procCs végül"); }} nyilvános statikus void main (karakterláncok) {próbáld {procA (); } fogás (e kivétel) {System.out.ln ("kivétel fogva"); } procB (); procC (); }} // kimenet a procA procA-ban végül Kivétel: a procB-ben belül procB procB-ben végre a procC procC-ben
A véglegesítés meghatározása
- A véglegesítés egy módszer az objektum osztályban.
- Lehet, hogy egy objektum nem-java erőforrásokat tartalmaz, például fájlkezelőt; akkor meg kell szabadítani, mielőtt elpusztulna.
- Ezt a módszert a hulladékgyűjtő alkalmazza, mielőtt az objektumot teljesen megsemmisíti.
- Ez a módszer megtisztítási tevékenységeket hajt végre az objektum megsemmisítése előtt.
A módszer finalize () általános formája a következő.
védett void finalize () {// véglegesítési kód itt}
A véglegesítési módszert védettnek nyilvánítják, így az osztályhoz kívül nem érhető el.
Ezt a módszert mindig a szemétgyűjtés előtt hívják fel.
- A final kulcsszó egy hozzáférés-módosító, végül egy blokk, és a véglegesítés egy módszer.
- A végleges kulcsszó alkalmazható az osztályokra, változókra és módszerekre, végül egy kivétel kezelésére használt próbálkozás-blokkhoz társított blokk, a véglegesítés olyan módszer, amely csak objektumokon működik.
- A véglegesnek nyilvánított változó állandóvá válik, és azt nem lehet újra kiosztani, a véglegesnek nyilvánított módszert nem lehet felülbírálni, és a véglegesnek nyilvánított osztály soha nem örökölhető. Az utolsó blokkot a try and catch blokk által felhasznált erőforrások megtisztítására használják. A véglegesítés módszerrel tisztítják az objektumok által használt erőforrásokat az objektum megsemmisítése előtt.
Következtetés:
A véglegesítés, a véglegesítés és a véglegesítés eltérő hatást gyakorol egy módszerre.