Összehasonlító táblázat
Az összehasonlítás alapja | Végső | Végül | véglegesítése |
---|---|---|---|
Alapvető | A Final egy "Kulcsszó" és "hozzáférési módosító" a Java-ban. | Végül egy "blokk" Java. | A véglegesítés egy „módszer” Java-ban. |
Alkalmazható | A döntő az osztályokra, változókra és módszerekre alkalmazható kulcsszó. | Végül egy blokk, amely mindig a próbálkozáshoz és a fogási blokkhoz kapcsolódik. | a véglegesítés () egy objektumokra alkalmazható módszer. |
Dolgozó | (1) A végső változó állandóvá válik, és nem rendelhető át. (2) A végső módszert nem lehet felülírni a gyermekosztály. (3) A végső osztály nem bővíthető. | A "végül" blokk megtisztítja a "próbálkozás" blokkban használt erőforrásokat. | A véglegesítési módszer elvégzi az objektumhoz kapcsolódó tevékenységek törlését a megsemmisítése előtt. |
Végrehajtás | A végső módszert a hívás után hajtják végre. | A "Végül" blokk a "próbálkozás" blokk végrehajtása után hajt végre. | a véglegesítés () módszer közvetlenül az objektum megsemmisítése előtt hajtódik végre. |
A döntő meghatározása
A „Final” kulcsszó a Java-ban. Ez egy hozzáférési módosító. A „végleges” kulcsszó az osztályok, módszerek és változók esetében alkalmazható. Nézzük meg, hogyan működik mindegyikükkel.
Végső változó
- Ha egy végső kulcsszót alkalmaznak a változóra, akkor azt nem lehet tovább módosítani.
- A végleges változót inicializálni kell a bejelentéskor.
- A közös kódolási egyezményben a végső változókat az UPPERCASE-ban adják meg.
- Az utolsó változó nem foglal helyet a memóriában.
végleges int FILE_OPEN = 2;
Végső módszerek
- Ha az osztályba tartozó módszert véglegesnek nyilvánítják, az alosztálya nem felülbírálható.
- A véglegesnek nyilvánított kis módszereket a fordító „inline” -ként teheti meg, ami csökkenti a függvényhívás fölötti értéket és növeli a teljesítménynövelést.
- A felülbírált módszerek hívása dinamikusan megoldódik, de ha egy módszert véglegesnek nyilvánítanak, nem lehet felülírni. Ezért a függvényhívás a fordítási idő alatt megoldható.
A osztály {utolsó void meth () {System.out.println ("Ez egy végső módszer."); }} B osztály kiterjeszti az A {void meth () {// Clas B nem örökölheti az A. osztály módszerét. System.out.println ("Nem felülbírálja"); }}
Végső osztály
- Ha egy osztályt véglegesnek nyilvánítanak, akkor semmilyen alosztály nem örökölhet.
- Az osztály véglegesnek nyilvánítása automatikusan véglegesnek nyilvánítja az összes módszert.
- Nem lehet „absztrakt” és „végleges” osztályt nyilvánítani.
A végső osztály A {// ...} B osztály kiterjed A {// A B osztály nem örökölheti az A / ... osztályt
Végül a definíció
- Java-ban „végül” egy olyan blokk, amely mindig a próba / fogás blokkhoz kapcsolódik.
- A „végül” blokk a próba / fogás blokk után és a próba / fogás blokk után következik be.
- A „végül” blokk végrehajtja, hogy a kivételt dobják-e vagy sem.
- Amikor kivételt dobnak, és egyetlen fogásblokk sem felel meg a kivételnek, akkor a „végleges” blokk végrehajtásra kerül.
- Amikor egy módszer visszatér a hívóhoz a próbálkozás / fogadás blokk belsejéből egy kivágott kivételen vagy egy kifejezett visszatérési nyilatkozaton keresztül, a „végső” blokk végrehajtása közvetlenül a módszer visszatérése előtt történik.
- A „végül” blokk az erőforrások tisztítására vagy a „próbálkozás” blokkban használt memória felszabadítására szolgál.
- A „véglegesen” blokk opcionális, de jó próbálkozni, hogy végül a blokk után írja le a blokkot.
class EndExample {// Ez a módszer kivételt tesz a módszerből. static void procA () {try {System.out.println ("belső procA"); dobjon új RuntimeException-et ("demo"); } végül {System.out.println ("procA's végül"); }} // Vissza egy kísérleti blokkból. static void procB () {try {System.out.println ("belül procB"); Visszatérés; } végül {System.out.println ("procB's végül"); }} // Rendszeresen hajtson végre egy próbálkozó blokkot. static void procC () {try {System.out.println ("belül a procC"); } végül {System.out.println ("procC's végül"); }} public static void main (String args []) {try {procA (); } catch (Kivétel e) {System.out.println ("Kivétel"); } procB (); procC (); }} // kimenet a procA procA-kban végül A procB procB-k belsejében elért kivétel végül a procC procC-k belsejébe került
A véglegesítés meghatározása
- A véglegesítés egy objektumosztály szerinti módszer.
- Előfordulhat, hogy egy objektum olyan nem-java-erőforrásokat tart, mint a fájlkezelő; akkor el kell szabadítani, mielőtt megsemmisülne.
- Ezt a módszert a szemétgyűjtő hívja fel, mielőtt teljesen elpusztítja az objektumot.
- Ez a módszer az objektum tisztítási tevékenységét végzi el, mielőtt megsemmisítené.
A módszer végső 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 nem érhető el az osztályon kívül.
Ezt a módszert mindig a szemétgyűjtés előtt hívják.
A végső, végül és a véglegesítés közötti különbségek
- A végleges kulcsszó hozzáférési módosító, végül egy blokk és véglegesítés egy módszer.
- A végleges kulcsszó az osztályok osztályaihoz, változóihoz és módszereihez alkalmazható, végül egy blokk, amely a kivételeket kezelő próbálkozó blokkhoz kapcsolódik, véglegesítés egy olyan módszer, amely csak objektumokon működik.
- A véglegesnek nyilvánított változó állandóvá válik, és újra nem rendelhető újra, a véglegesnek nyilvánított módszert nem lehet felülírni, és a végsőnek nyilvánított osztály soha nem örökölhető. A végső blokk a kísérleti blokk által használt erőforrások tisztítására szolgál. A véglegesítési módszer az objektum által használt erőforrások tisztítására szolgál, mielőtt az objektum megsemmisülne.
Következtetés:
A végső, végül és véglegesítésnek más hatása van, ha egy módszerre alkalmazzák.