The metoda ostateczna w Javie jest używany jako modyfikator braku dostępu dotyczy tylko a zmienny , A metoda lub klasa. Jest to przyzwyczajone ograniczyć użytkownika w Jawie .
Poniżej znajdują się różne konteksty gdzie używany jest finał:
- Zmienny
- metoda
- Klasa
Charakterystyka słowa kluczowego final w Javie:
W Javie słowo kluczowe final wskazuje, że zmienna, metoda lub klasa nie mogą być modyfikowane ani rozszerzane. Oto niektóre z jego cech:
- Zmienne końcowe: Kiedy zmienna jest zadeklarowana jako ostateczna, jej wartość nie może zostać zmieniona po jej zainicjowaniu. Jest to przydatne do deklarowania stałych lub innych wartości, których nie należy modyfikować.
- Metody końcowe : Kiedy metoda jest zadeklarowana jako ostateczna, nie można jej zastąpić podklasą. Jest to przydatne w przypadku metod, które są częścią publicznego API klasy i nie powinny być modyfikowane przez podklasy.
- Zajęcia końcowe: Kiedy klasa jest zadeklarowana jako ostateczna, nie można jej rozszerzyć o podklasę. Jest to przydatne w przypadku klas, które mają być używane w niezmienionej postaci i nie powinny być modyfikowane ani rozszerzane.
- Inicjalizacja: Zmienne końcowe muszą zostać zainicjowane albo w momencie deklaracji, albo w konstruktorze klasy. Dzięki temu wartość zmiennej jest ustawiona i nie można jej zmienić.
- Wydajność: Użycie wersji końcowej może czasami poprawić wydajność, ponieważ kompilator może skuteczniej optymalizować kod, gdy wie, że zmiennej lub metody nie można zmienić.
- Bezpieczeństwo: Wersja ostateczna może pomóc w poprawie bezpieczeństwa, uniemożliwiając złośliwemu kodowi modyfikowanie wrażliwych danych lub zachowań.
Ogólnie rzecz biorąc, słowo kluczowe final jest użytecznym narzędziem poprawiającym jakość kodu i zapewniającym, że pewnych aspektów programu nie można modyfikować ani rozszerzać. Deklarując zmienne, metody i klasy jako ostateczne, programiści mogą pisać bezpieczniejszy, solidniejszy i łatwiejszy w utrzymaniu kod.
Zmienna końcowa Java
Kiedy zmienna jest zadeklarowana za pomocą ostatnie słowo kluczowe , jego wartości nie można zmienić w zasadzie A stały . Oznacza to również, że Ty musi zainicjować zmienną końcową .
Jeżeli ostatnią zmienną jest a odniesienie , oznacza to, że zmienna nie może być ponownie powiązane z odniesieniem innego obiektu, ale stan wewnętrzny obiektu wskazywany przez tę zmienną referencyjną można zmienić, tzn. można dodać lub usunąć elementy z tablica końcowa lub zbiórka końcowa.
Dobrą praktyką jest reprezentowanie zmiennych końcowych wielkimi literami i używanie podkreślenia do oddzielania słów.
Przykład:
Jawa 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); } }> Wyjście
Value of PI: 3.14159>
Wyjście:
Value of PI: 3.14159>
Różne metody wykorzystania zmiennej końcowej
Zobaczmy różne metody, za pomocą których możemy wykorzystać zmienną końcową w Javie.
1. zmienna końcowa
Przykład:
// Final variable final int THRESHOLD = 5;>
2. Pusta zmienna końcowa
Przykład:
// Blank final variable final int THRESHOLD;>
3. Statyczna zmienna końcowa
Przykład:
// Final static variable PI static final double PI = 3.141592653589793;>
4. Statyczne Puste Zmienna końcowa
Przykład:
// Blank final static variable static final double PI;>
Inicjowanie końcowej zmiennej
Musimy zainicjować zmienną końcową, w przeciwnym razie kompilator zgłosi błąd w czasie kompilacji. Zmienna końcowa może zostać zainicjowana tylko raz, albo poprzez inicjator lub oświadczenie o cesji. Istnieją trzy sposoby inicjalizacji zmiennej końcowej:
jak zdobyć gołębia łownego na Androida
- Możesz zainicjować zmienną końcową po jej zadeklarowaniu. To podejście jest najczęstsze. Ostatnia zmienna nazywa się a pusta zmienna końcowa Jeśli to jest nie inicjalizowane podczas deklaracji. Poniżej znajdują się dwa sposoby inicjowania pustej zmiennej końcowej.
- Pustą zmienną końcową można zainicjować wewnątrz pliku blok inicjatora instancji lub konstruktor. Jeśli w klasie znajduje się więcej niż jeden konstruktor, musi on zostać zainicjowany w każdym z nich, w przeciwnym razie zostanie zgłoszony błąd kompilacji.
- Pustą końcową zmienną statyczną można zainicjować wewnątrz a blok statyczny .
Przyjrzyjmy się dwóm różnym sposobom inicjowania zmiennej końcowej
Przykład:
Jawa // 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; } }>
W powyższym kodzie nie było żadnej głównej metody, ponieważ służyła ona jedynie celom ilustracyjnym, aby lepiej zrozumieć i wyciągnąć wnioski:
Obserwacja 1: Kiedy używać zmiennej końcowej?
Jedyna różnica między zmienną normalną a zmienną końcową polega na tym, że możemy ponownie przypisać wartość do zmiennej normalnej, ale nie możemy zmienić raz przypisanej wartości zmiennej końcowej. Stąd zmiennych końcowych należy używać tylko dla wartości, które chcemy zachować na stałym poziomie przez cały czas wykonywania programu.
Obserwacja 2: Odnośna zmienna końcowa.
Kiedy zmienna końcowa jest odniesieniem do obiektu, wówczas ta zmienna końcowa nazywa się referencyjna zmienna końcowa . Na przykład finał Bufor ciągów zmienna wygląda zdefiniowana poniżej w następujący sposób:
final StringBuffer sb;>
Jak wszyscy wiemy, ostatecznej zmiennej nie można ponownie przypisać. Jednak w przypadku końcowej zmiennej odniesienia można zmienić stan wewnętrzny obiektu wskazywanego przez tę zmienną odniesienia. Należy pamiętać, że nie jest to ponowne przypisanie.
Ta właściwość finał jest nazywany nieprzechodniość . Aby zrozumieć, co oznacza stan wewnętrzny obiektu, jak pokazano w poniższym przykładzie, należy:
Przykład 1:
Jawa // 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); } }> Wyjście
Geeks GeeksForGeeks>
The nieprzechodniość Właściwość dotyczy również tablic, ponieważ tablice są obiektami w Javie. Tablice z ostatnie słowo kluczowe są również tzw końcowe tablice .
Notatka: Jak omówiono powyżej, końcowej zmiennej nie można ponownie przypisać, gdyż spowoduje to błąd kompilacji.
Przykład 2:
Jawa // 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; } }> Wyjście:

Pamiętać: Kiedy w metodzie/konstruktorze/bloku tworzona jest zmienna końcowa, nazywa się ją lokalną zmienną końcową i musi zostać zainicjowana raz w miejscu jej utworzenia. Zobacz poniższy program dla lokalnej zmiennej końcowej.
Przykład:
Jawa // 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); } }> Wyjście
20>
Zapamiętaj te kluczowe punkty tak, jak je postrzegasz, zanim przejdziesz dalej, jak wymieniono poniżej:
- Zwróć uwagę na różnicę między C++ konst zmienne i Java finał zmienne. const zmienne w C++ muszą być przypisano wartość po zadeklarowaniu . W przypadku zmiennych końcowych w Javie tak jest niekoniecznie jak widać na powyższych przykładach. Zmiennej końcowej można przypisać wartość później, ale tylko raz.
- finał z pętla foreach : final z instrukcją for-każdy jest oświadczeniem prawnym.
Przykład:
Jawa // 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 + ' '); } }> Wyjście
1 2 3>
Wyjaśnienie wyjścia: Od I zmienna wychodzi poza zakres przy każdej iteracji pętli, jest ponownie deklarowana w każdej iteracji, umożliwiając użycie tego samego tokena (i) do reprezentowania wielu zmiennych.
Przykład:
Jawa 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 // ... }> Wyjście
The value is: 10 Hello, world! Hello! Hello, final!>
Zajęcia końcowe z języka Java
Kiedy klasa jest zadeklarowana za pomocą finał słowo kluczowe w Javie nazywa się a ostatnia klasa . Nie może być zajęć końcowych rozszerzony (odziedziczony) .
Istnieją dwa zastosowania klasy końcowej:
Zastosowanie 1: Jednym z nich jest zdecydowanie zapobieganie dziedzictwo , gdyż zajęć końcowych nie można przedłużyć. Na przykład wszystko Klasy wrapperów tak jak Liczba całkowita , Platforma itp. są zajęciami końcowymi. Nie możemy ich przedłużyć.
final class A { // methods and fields } // The following class is illegal class B extends A { // COMPILE-ERROR! Can't subclass A }>Zastosowanie 2: Innym zastosowaniem final z klasami jest to utwórz niezmienną klasę jak z góry określone Strunowy klasa. Nie można uczynić klasy niezmienną bez uczynienia jej ostateczną.
obiekt Java
Ostateczna metoda Java
Kiedy metoda jest zadeklarowana za pomocą finał słowo kluczowe, nazywa się to a metoda ostateczna w Jawie. Ostateczna metoda nie może być zastąpiony .
The Obiekt class to robi — wiele jej metod jest ostatecznych. Musimy zadeklarować metody ze słowem kluczowym final, dla których musimy zastosować tę samą implementację we wszystkich klasach pochodnych.
Ilustracja: Końcowe słowo kluczowe z metodą
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!'); } }>Zalety końcowego słowa kluczowego w Javie:
Słowo kluczowe final w Javie zapewnia kilka korzyści, w tym:
- Zapewnienie niezmienności: Gdy zmienna lub odwołanie jest oznaczone jako ostateczne, po przypisaniu nie można zmienić jej wartości. Dzięki temu dane są niezmienne i nie można ich przypadkowo lub złośliwie zmodyfikować.
- Poprawa wydajności : Użycie wersji finalnej może czasami pomóc w poprawie wydajności, ponieważ wirtualna maszyna Java (JVM) może skuteczniej optymalizować kod, gdy wie, że pewnych wartości lub odwołań nie można zmienić.
- Ułatwianie zrozumienia kodu: Deklarując zmienne, metody lub klasy jako ostateczne, programiści mogą ułatwić zrozumienie i uzasadnienie swojego kodu. Gdy wartość lub odniesienie zostanie oznaczone jako ostateczne, jasne jest, że nie ulegnie ona zmianie, co może uprościć analizę kodu i debugowanie.
- Promowanie ponownego użycia kodu: Deklarując metody jako ostateczne, programiści mogą zapobiec ich zastępowaniu przez podklasy. Może to pomóc w promowaniu ponownego użycia kodu i ograniczeniu powielania, ponieważ podklasy muszą korzystać z implementacji metody klasy nadrzędnej.
- Zwiększanie bezpieczeństwa: Użycie wersji final może pomóc zwiększyć bezpieczeństwo, uniemożliwiając złośliwemu kodowi modyfikowanie wrażliwych danych lub zachowań.
Ogólnie rzecz biorąc, słowo kluczowe final jest użytecznym narzędziem poprawiającym jakość kodu i zapewniającym, że pewnych aspektów programu nie można modyfikować. Deklarując zmienne, metody i klasy jako ostateczne, programiści mogą pisać bezpieczniejszy, solidniejszy i łatwiejszy w utrzymaniu kod.
Więcej przykładów i zachowań końcowych metod i klas końcowych , proszę zobaczyć Używanie finalu z dziedziczeniem. Proszę zobaczyć streszczenie w Javie artykuł dotyczący różnic między finał i abstrakcyjny .
Powiązane pytanie do rozmowy kwalifikacyjnej (ważne): Różnica między final, wreszcie i finalizacją w Javie
Wniosek
Ostateczne słowo kluczowe w Javie to metoda tworzenia zmiennych, metod lub klas ograniczonych przez użytkownika. W tym samouczku szczegółowo omawiamy ostatnie słowo kluczowe w Javie i rozumiemy wszystkie jego konteksty.
Konteksty wyjaśniono na przykładach z programami Java, co zapewnia pełne zrozumienie tematu.
Ostateczne słowo kluczowe Java – często zadawane pytania
Jaka jest ostateczna metoda w Javie?
Ostatnią metodą w Javie jest metoda zadeklarowana za pomocą ostatnie słowo kluczowe , co oznacza, że jego implementacja nie może zostać przesłonięta przez podklasy.
Czy metoda finalna jest dziedziczona?
Nie, w Javie metoda finalna nie może być dziedziczona przez podklasę. Oznacza to, że podklasa nie można zastąpić metody końcowej .
Jakie jest końcowe słowo kluczowe i statyczne słowo kluczowe w Javie?
Ostateczne słowo kluczowe: Służy do deklarowania zmiennych, metod lub klas jako niemodyfikowalnych.
Słowo kluczowe statyczne: służy do deklarowania członków klasy (zmiennych i metod), które należą do samej klasy, a nie do poszczególnych obiektów.
Czy możemy napisać końcowe słowo kluczowe z ciągiem znaków w Javie?
Tak, możesz zadeklarować zmienną ze słowem kluczowym final i przypisać do niej literał ciągu.