The galutinis metodas Java yra naudojamas kaip a ne prieigos modifikatorius taikomas tik a kintamasis , a metodas , arba a klasė. Taip pripratę apriboti vartotoją Java kalboje .
Toliau pateikiami skirtingi kontekstai kur naudojamas finalas:
- Kintamasis
- Metodas
- Klasė
Galutinio „Java“ raktinio žodžio charakteristikos:
„Java“ kalboje galutinis raktinis žodis naudojamas norint nurodyti, kad kintamojo, metodo ar klasės negalima keisti ar išplėsti. Štai keletas jo savybių:
- Galutiniai kintamieji: Kai kintamasis paskelbiamas kaip galutinis, jo reikšmės negalima pakeisti, kai jis buvo inicijuotas. Tai naudinga deklaruojant konstantas ar kitas reikšmes, kurių nereikėtų keisti.
- Galutiniai metodai : Kai metodas paskelbiamas kaip galutinis, jo negali nepaisyti poklasis. Tai naudinga metodams, kurie yra klasės viešosios API dalis ir kurių neturėtų keisti poklasiai.
- Galutinės klasės: Kai klasė paskelbiama kaip galutinė, ji negali būti išplėsta poklasiu. Tai naudinga klasėms, kurios yra skirtos naudoti tokios, kokios yra, ir neturėtų būti keičiamos ar plečiamos.
- Inicijavimas: Galutiniai kintamieji turi būti inicijuoti deklaravimo metu arba klasės konstruktoriuje. Taip užtikrinama, kad kintamojo reikšmė yra nustatyta ir jos negalima keisti.
- Spektaklis: Finalo naudojimas kartais gali pagerinti našumą, nes kompiliatorius gali efektyviau optimizuoti kodą, kai žino, kad kintamojo ar metodo pakeisti negalima.
- Saugumas: Galutinis sprendimas gali padėti pagerinti saugumą, neleisdamas kenkėjiškam kodui keisti neskelbtinų duomenų ar elgesio.
Apskritai galutinis raktinis žodis yra naudinga priemonė, skirta pagerinti kodo kokybę ir užtikrinti, kad tam tikri programos aspektai nebūtų keičiami ar išplėsti. Paskelbdami kintamuosius, metodus ir klases kaip galutinius, kūrėjai gali parašyti saugesnį, patikimesnį ir prižiūrimesnį kodą.
„Java“ galutinis kintamasis
Kai kintamasis deklaruojamas su galutinis raktinis žodis , jos vertė negali būti pakeista , iš esmės, a pastovus . Tai taip pat reiškia, kad jūs turi inicijuoti galutinį kintamąjį .
Jei galutinis kintamasis yra a nuoroda , tai reiškia, kad kintamasis negali būti perrišti į nuorodą kitą objektą, tačiau vidinė objekto būsena, kurią nurodo tas atskaitos kintamasis, gali būti pakeista, t. y. galite pridėti arba pašalinti elementus iš galutinis masyvas arba galutinė kolekcija.
Gera praktika galutinius kintamuosius žymėti visomis didžiosiomis raidėmis, žodžiams atskirti naudojant apatinį brūkšnį.
Pavyzdys:
Java public class ConstantExample { public static void main(String[] args) { // Define a constant variable PI final double PI = 3.14159; // Print the value of PI System.out.println('Value of PI: ' + PI); } }>
Išvestis
Value of PI: 3.14159>
Išvestis:
Value of PI: 3.14159>
Įvairūs galutinio kintamojo naudojimo būdai
Pažiūrėkime įvairius metodus, kuriais galime naudoti galutinį kintamąjį „Java“.
1. galutinis kintamasis
Pavyzdys:
// Final variable final int THRESHOLD = 5;>
2. Tuščias galutinis kintamasis
Pavyzdys:
// Blank final variable final int THRESHOLD;>
3. Statinis galutinis kintamasis
Pavyzdys:
// Final static variable PI static final double PI = 3.141592653589793;>
4. Statinis tuščias galutinis kintamasis
Pavyzdys:
// Blank final static variable static final double PI;>
Galutinio kintamojo inicijavimas
Turime inicijuoti galutinį kintamąjį, kitaip kompiliatorius išmes kompiliavimo laiko klaidą. Galutinį kintamąjį galima inicijuoti tik vieną kartą, naudojant an iniciatorius arba priskyrimo pareiškimas. Yra trys galutinio kintamojo inicijavimo būdai:
nepasirašytas int c programavimas
- Galite inicijuoti galutinį kintamąjį, kai jis deklaruojamas. Šis metodas yra labiausiai paplitęs. Galutinis kintamasis vadinamas a tuščias galutinis kintamasis jei tai yra ne inicijuojamas deklaruojant. Toliau pateikiami du būdai, kaip inicijuoti tuščią galutinį kintamąjį.
- Tuščias galutinis kintamasis gali būti inicijuotas viduje egzemplioriaus inicijavimo blokas arba konstruktorius. Jei klasėje yra daugiau nei vienas konstruktorius, jis turi būti inicijuotas visuose, kitaip bus pateikta kompiliavimo laiko klaida.
- Tuščią galutinį statinį kintamąjį galima inicijuoti a viduje statinis blokas .
Pažiūrėkime šiuos du skirtingus galutinio kintamojo inicijavimo būdus
Pavyzdys:
Java // Java Program to demonstrate Different // Ways of Initializing a final Variable // Main class class GFG { // a final variable // direct initialize final int THRESHOLD = 5; // a blank final variable final int CAPACITY; // another blank final variable final int MINIMUM; // a final static variable PI // direct initialize static final double PI = 3.141592653589793; // a blank final static variable static final double EULERCONSTANT; // instance initializer block for // initializing CAPACITY { CAPACITY = 25; } // static initializer block for // initializing EULERCONSTANT static{ EULERCONSTANT = 2.3; } // constructor for initializing MINIMUM // Note that if there are more than one // constructor, you must initialize MINIMUM // in them also public GFG() { MINIMUM = -1; } }>
Pirmiau pateiktame kode nebuvo pagrindinio metodo, nes jis buvo skirtas tik iliustracijai, kad būtų galima geriau suprasti ir padaryti išvadas:
1 pastaba: Kada naudoti galutinį kintamąjį?
Vienintelis skirtumas tarp įprasto kintamojo ir galutinio kintamojo yra tas, kad mes galime iš naujo priskirti reikšmę įprastam kintamajam, bet negalime pakeisti galutinio kintamojo reikšmės, kai ji buvo priskirta. Taigi galutiniai kintamieji turi būti naudojami tik toms reikšmėms, kurias norime išlikti pastovios per visą programos vykdymą.
2 pastaba: Referencinis galutinis kintamasis.
Kai galutinis kintamasis yra nuoroda į objektą, tada šis galutinis kintamasis vadinamas referencinis galutinis kintamasis . Pavyzdžiui, finalas StringBuffer kintamasis atrodo taip, kaip apibrėžta toliau:
final StringBuffer sb;>
Kaip visi žinome, galutinio kintamojo negalima priskirti iš naujo. Tačiau galutinio atskaitos kintamojo atveju vidinė objekto būsena, kurią nurodo tas atskaitos kintamasis, gali būti pakeista. Atminkite, kad tai nėra priskyrimas iš naujo.
Ši savybė galutinis vadinamas netranzityvumas . Norėdami suprasti, ką reiškia vidinė objekto būsena, kaip parodyta toliau pateiktame pavyzdyje:
1 pavyzdys:
Java // Java Program to demonstrate // Reference of Final Variable // Main class class GFG { // Main driver method public static void main(String[] args) { // Creating an object of StringBuilder class // Final reference variable final StringBuilder sb = new StringBuilder('Geeks'); // Printing the element in StringBuilder object System.out.println(sb); // changing internal state of object reference by // final reference variable sb sb.append('ForGeeks'); // Again printing the element in StringBuilder // object after appending above element in it System.out.println(sb); } }>
Išvestis
Geeks GeeksForGeeks>
The netranzityvumas nuosavybė taip pat taikoma masyvams, nes masyvai yra Java objektai. Masyvai su galutinis raktinis žodis taip pat vadinami galutiniai masyvai .
Pastaba: Kaip aptarta pirmiau, galutinio kintamojo negalima priskirti iš naujo, tai padarius, atsiras kompiliavimo laiko klaida.
2 pavyzdys:
Java // Java Program to Demonstrate Re-assigning // Final Variable will throw Compile-time Error // Main class class GFG { // Declaring and customly initializing // static final variable static final int CAPACITY = 4; // Main driver method public static void main(String args[]) { // Re-assigning final variable // will throw compile-time error CAPACITY = 5; } }>
Išvestis:
Prisiminti: Kai galutinis kintamasis sukuriamas metodo / konstruktoriaus / bloko viduje, jis vadinamas vietiniu galutiniu kintamuoju ir vieną kartą turi būti inicijuotas ten, kur yra sukurtas. Žemiau žr. vietinį galutinį kintamąjį programą.
Pavyzdys:
Java // Java program to demonstrate // local final variable // Main class class GFG { // Main driver method public static void main(String args[]) { // Declaring local final variable final int i; // Now initializing it with integer value i = 20; // Printing the value on console System.out.println(i); } }>
Išvestis
20>
Prisiminkite šiuos pagrindinius dalykus, kaip supratote prieš judant į priekį, kaip nurodyta toliau:
- Atkreipkite dėmesį į skirtumą tarp C++ konst kintamieji ir Java galutinis kintamieji. const kintamieji C++ turi būti paskelbus priskiriama reikšmė . Galutiniams Java kintamiesiems taip yra nereikalinga kaip matome aukščiau pateiktuose pavyzdžiuose. Galutiniam kintamajam gali būti suteikta reikšmė vėliau, bet tik vieną kartą.
- galutinis su foreach kilpa : galutinis su kiekvienu teiginiu yra teisinis pareiškimas.
Pavyzdys:
Java // Java Program to demonstrate Final // with for-each Statement // Main class class GFG { // Main driver method public static void main(String[] args) { // Declaring and initializing // custom integer array int arr[] = { 1, 2, 3 }; // final with for-each statement // legal statement for (final int i : arr) System.out.print(i + ' '); } }>
Išvestis
1 2 3>
Išvesties paaiškinimas: Nuo pat i kintamasis nepatenka į taikymo sritį su kiekviena ciklo iteracija, jis iš naujo deklaruojamas kiekvieną iteraciją, leidžiantį naudoti tą patį atpažinimo raktą (i) keliems kintamiesiems atstovauti.
Pavyzdys:
java pagrindinis metodasJava
public class Example { public static void main(String[] args) { final int VALUE = 10; // declaring a final variable System.out.println('The value is: ' + VALUE); // VALUE = 20; // uncommenting this line will cause a compiler error // System.out.println('The new value is: ' + VALUE); final String MESSAGE = 'Hello, world!'; // declaring a final variable System.out.println(MESSAGE); MyClass myObj = new MyClass(); myObj.printMessage(); myObj.printFinalMessage(); // MyOtherClass extends MyClass {} // uncommenting this line will cause a compiler error } } class MyClass { final String message = 'Hello!'; // declaring a final instance variable void printMessage() { System.out.println(message); } void printFinalMessage() { final String finalMessage = 'Hello, final!'; System.out.println(finalMessage); } } final class MyOtherClass { // declaring a final class // ... }>
Išvestis
The value is: 10 Hello, world! Hello! Hello, final!>
„Java“ paskutinės klasės
Kai klasė deklaruojama su galutinis Raktinis žodis Java, jis vadinamas a paskutinė klasė . Galutinė klasė negali būti pratęstas (paveldimas) .
Yra du galutinės klasės naudojimo būdai:
1 naudojimas: Vienas iš jų yra neabejotinai užkirsti kelią paveldėjimo , nes baigiamųjų klasių pratęsti negalima. Pavyzdžiui, visi Vyniojimo klasės Kaip Sveikasis skaičius , Plūdė ir tt yra paskutinės klasės. Mes negalime jų pratęsti.
final class A { // methods and fields } // The following class is illegal class B extends A { // COMPILE-ERROR! Can't subclass A }>
2 naudojimas: Kitas galutinio su klasėmis naudojimas yra sukurti nekintamą klasę kaip iš anksto nustatytas Styga klasė. Klasės negalima paversti nekintančia, jei jos nepadaroma galutinė.
Galutinis Java metodas
Kai metodas deklaruojamas su galutinis raktinis žodis, jis vadinamas a galutinis metodas Java kalboje. Galutinis metodas negali būti nepaisoma .
The Objektas klasė tai daro – kai kurie jos metodai yra galutiniai. Turime deklaruoti metodus su galutiniu raktiniu žodžiu, kuriam privalome laikytis to paties įgyvendinimo visose išvestinėse klasėse.
Iliustracija: Galutinis raktinis žodis su metodu
class A { final void m1() { System.out.println('This is a final method.'); } } class B extends A { void m1() { // Compile-error! We can not override System.out.println('Illegal!'); } }>
Galutinio raktinio žodžio „Java“ pranašumai:
Paskutinis „Java“ raktinis žodis suteikia keletą privalumų, įskaitant:
- Nekintamumo užtikrinimas: Kai kintamasis arba nuoroda pažymima kaip galutinis, jo reikšmės negalima pakeisti, kai jis yra priskirtas. Tai padeda užtikrinti, kad duomenys būtų nepakeičiami ir jų negalima netyčia ar piktybiškai pakeisti.
- Našumo gerinimas : Finalo naudojimas kartais gali padėti pagerinti našumą, nes „Java Virtual Machine“ (JVM) gali efektyviau optimizuoti kodą, kai žino, kad tam tikrų reikšmių ar nuorodų pakeisti negalima.
- Kad kodą būtų lengviau suprasti: Paskelbdami kintamuosius, metodus ar klases kaip galutinius, kūrėjai gali padaryti savo kodą lengviau suprantamą ir pagrįstą. Kai reikšmė arba nuoroda pažymima kaip galutinė, aišku, kad ji nepasikeis, o tai gali supaprastinti kodo analizę ir derinimą.
- Pakartotinio kodo naudojimo skatinimas: Paskelbdami metodus galutiniais, kūrėjai gali užkirsti kelią poklasiams jų nepaisyti. Tai gali padėti skatinti pakartotinį kodo naudojimą ir sumažinti dubliavimą, nes poklasiai turi naudoti pirminės klasės metodą.
- Saugumo didinimas: Galutinis naudojimas gali padėti padidinti saugumą, nes neleidžia kenkėjiškam kodui keisti neskelbtinų duomenų ar elgesio.
Apskritai galutinis raktinis žodis yra naudinga priemonė, skirta pagerinti kodo kokybę ir užtikrinti, kad tam tikri programos aspektai nebūtų keičiami. Paskelbdami kintamuosius, metodus ir klases kaip galutinius, kūrėjai gali parašyti saugesnį, patikimesnį ir prižiūrimesnį kodą.
Daugiau galutinių metodų ir galutinių klasių pavyzdžių ir elgesio , Prašau pažiūrėk Galutinis naudojimas su paveldėjimu. Prašome žiūrėti abstrakčiai java straipsnis apie skirtumus tarp galutinis ir abstrakčiai .
Susijęs interviu klausimas (svarbu): Skirtumas tarp galutinio, galutinio ir užbaigimo Java
Išvada
Paskutinis „Java“ raktinis žodis yra būdas sukurti vartotojo ribojamus kintamuosius, metodus ar klases. Šiame vadove mes išsamiai aprašome galutinį „Java“ raktinį žodį ir suprantame visus jo kontekstus.
Kontekstai paaiškinami naudojant Java programas pavyzdžiuose, suteikiant visišką dalyko supratimą.
„Java“ galutinis raktinis žodis – DUK
Kas yra galutinis metodas „Java“?
Galutinis Java metodas yra metodas, deklaruotas su galutinis raktinis žodis , o tai reiškia, kad jo įgyvendinimo negali nepaisyti poklasiai.
Ar galutinis metodas yra paveldimas?
Ne, Java galutinio metodo negali paveldėti poklasis. Tai reiškia, kad poklasis negali nepaisyti galutinio metodo .
Koks yra galutinis raktinis žodis ir statinis raktinis žodis „Java“?
Galutinis raktinis žodis: Jis naudojamas deklaruoti kintamuosius, metodus ar klases kaip nekeičiamus.
Statinis raktinis žodis: naudojamas deklaruoti klasės narius (kintamuosius ir metodus), priklausančius pačiai klasei, o ne atskiriems objektams.
Ar galime parašyti galutinį raktinį žodį su eilute „Java“?
Taip, galite deklaruoti kintamąjį su galutiniu raktiniu žodžiu ir priskirti jam eilutę.