Jämförelsediagram
Grunder för jämförelse | Slutlig | Till sist | Avsluta |
---|---|---|---|
Grundläggande | Final är ett "Keyword" och "Access Modifier" i Java. | Slutligen är ett "block" i Java. | Slutförandet är en "metod" i Java. |
Tillämplig | Final är ett nyckelord som är tillämpligt på klasser, variabler och metoder. | Slutligen är ett block som alltid är förknippat med försök och fångstblock. | slutföra () är en metod som är tillämplig på objekt. |
Arbetssätt | (1) Slutlig variabel blir konstant, och den kan inte omfördelas. (2) En slutlig metod kan inte överskridas av barnklassen. (3) Slutklass kan inte förlängas. | Ett "äntligen" block, städa upp resurserna som används i "försök" block. | Avsluta metoden utför rensar upp aktiviteter relaterade till objektet före dess förstörelse. |
Avrättning | Slutlig metod utförs vid sitt samtal. | "Slutligen" -kvarteret körs strax efter utförandet av "try-catch" -blocket. | finalize () -metoden exekveras strax före förstöringen av objektet. |
Definition av Final
"Final" är ett nyckelord i Java. Det är en åtkomstmodifierare. Det "sista" sökordet är tillämpligt på klasserna, metoderna och variablerna. Låt oss se hur det fungerar med var och en av dem.
Slutlig variabel
- När ett sista sökord tillämpas på variabeln, kan det inte ändras ytterligare.
- En slutlig variabel måste initialiseras när den deklareras.
- I en gemensam kodningskonvention anges de slutliga variablerna i UPPERCASE.
- Den slutliga variabeln upptar inte minne per förekomst.
sista int FILE_OPEN = 2;
Slutliga metoder
- När en metod i klassen förklaras slutlig, kan den inte överskridas av dess underklass.
- Små metoder som deklareras slutgiltiga kan göras "inline" av kompilatorn som kommer att minska överkostnaden för funktionssamtal och öka prestandaförbättringar.
- Överdrivna metoder kallas, löses dynamiskt, men när en metod förklaras slutlig, kan den inte överskridas. Följaktligen kan funktionsanropet lösas vid kompileringstid.
klass A {final void meth () {System.out.println ("Detta är en slutlig metod."); }} klass B sträcker sig A {void meth () {// Clas B kan inte ärva sig metoden i klass A. System.out.println ("Överstyrs inte"); }}
Slutklass
- När en klass förklaras slutlig, kan den inte arvas av någon underklass.
- Deklarera en klass som slutlig kommer automatiskt att deklarera alla sina metoder slutgiltiga.
- Du kan inte deklarera en klass som både "abstrakt" och "slutlig".
slutlig klass A {// ...} klass B sträcker sig A {// Klass B kan inte ärva klass A // ...}
Definition av Slutligen
- I Java är "äntligen" ett block som alltid är associerat med försök / fångstblocket.
- Det "slutliga" blocket exekveras efter försök / fångstblocket och före koden som följer försök / fångblock.
- "Slutligen" blocket kommer att exekvera om undantaget kastas eller inte.
- När ett undantag kastas och inget fångstblock matchar undantaget ens då körs "slutligen" blocket.
- När en metod returnerar till den som ringer från insidan av försök / fångstblocket via ett obestämt undantag eller ett uttryckligt returformulär, blir "slutligen" blocket exekverat precis innan metoden återgår till den som ringer.
- Det "slutliga" blocket används för att städa upp resurserna eller frigöra minnet som används i "försök" -blocket.
- Det "slutliga" blocket är valfritt, men det är en bra övning att skriva slutligen blockera efter försök / fångstblocket.
klass FinallyExample {// Denna metod kasta ett undantag ur metoden. statisk tomrum procA () {försök {System.out.println ("inside procA"); kasta ny RuntimeException ("demo"); } äntligen {System.out.println ("procA's finally"); }} // Återvänd från ett försöksblock. statisk tomt procB () {försök {System.out.println ("inside procB"); lämna tillbaka; } äntligen {System.out.println ("procB's finally"); }} // Kör ett försök block normalt. statisk tomt procC () {försök {System.out.println ("inside procC"); } äntligen {System.out.println ("procC's finally"); }} statisk statisk tomt huvud (String args []) {försök {procA (); } fångst (Undantag e) {System.out.println ("Fångat undantag"); } procB (); procC (); }} // output inom procA procAs äntligen Undantag som fångats inuti procB procB s äntligen inuti procC procC s äntligen
Definition av slutförandet
- Finalisera är en metod i en objektklass.
- Ett objekt kan innehålla vissa icke-java-resurser, t.ex. filhandtag; då måste det befrias innan det förstörs.
- Denna metod åberopas av sopsamlare innan den förstör objektet helt.
- Denna metod utför rengöringsaktiviteter för objektet innan det förstörs.
Den allmänna formen av metoden slutför () är som följer.
skyddad tomgång slutför () {// slutkod här}
Den slutgiltiga metoden deklareras som skyddad så att den inte kan nås utanför klassen.
Denna metod kallas alltid före skräpuppsamlingen.
Viktiga skillnader mellan slutliga, slutligen och slutförda
- Nyckelordets slutliga är en åtkomstmodifierare, äntligen ett block och slutförandet är en metod.
- Nyckelordets slutgiltiga gäller för klasserna, variablerna och metoderna i klasserna, slutligen är ett block associerat med försöksfångstblocket som används för att hantera undantag, slutförandet är en metod som endast fungerar på objekt.
- Variabeln som en gång förklaras som slutgiltig blir konstant och kan inte omdirigeras igen, en metod som deklareras som slutgiltig kan inte överskridas och klassen en gång förklarad som slutgiltig kan aldrig vara ärvt. Det slutliga blocket används för att städa upp resurserna som används av försök och fångstblock. Den slutgiltiga metoden används för att städa upp de resurser som används av ett objekt innan objektet förstörs.
Slutsats:
Slutlig, slutligen och slutgiltig har en annan effekt när den tillämpas på en metod.