Różnica między ostatecznym a statycznym

W matematyce i nauce stała jest terminem oznaczającym pewną wartość, taką jak „π”, która jest praktyczną nazwą liczby 3.14159. Java ma swoje stałe. Są to zmienne, które w punkcie (a) nie należą do żadnego obiektu, a podpunkt (b) nie zmienia ich wartości po ich ustawieniu. Słowo statyczne w deklaracji zmiennej pokazuje, że zmienna nie należy do żadnego obiektu. Istnieje podobne słowo kluczowe, które mówi, że wartość zmiennej zostanie ustawiona tylko raz i nie ulegnie zmianie. To jest słowo kluczowe końcowe. To słowo kluczowe nie jest ograniczone do zmiennych statycznych, ale może być używane ze zmiennymi instancji, zmiennymi lokalnymi, a nawet ze zmiennymi, które są metodami parametrycznymi. Deklarując zmienną jako końcową, pokazujesz wszystkim, że zmienna podczas istnienia będzie miała tę samą wartość. Co ważniejsze, kompilator wykryje każdą próbę zmiany wartości tak zadeklarowanej zmiennej i zgłosi ją jako błąd. Jeśli chodzi o terminologię Java, zmienna zadeklarowana jako statyczna i końcowa nazywa się stałą.

Co to jest wersja ostateczna?

Ostateczny modyfikator może być używany w kilku miejscach w języku programowania Java. Tutaj omówimy jego najczęstsze użycie. Ostateczny modyfikator można zastosować do deklaracji zmiennej lokalnej, argumentu funkcji oraz niestatycznych lub statycznych zmiennych składowych. W tym kontekście modyfikator zmiennej przekształca się w stałą. Tłumacz języka tłumaczenia sprawdzi, czy jakiś kod próbuje zmodyfikować wartość, a takie próby zostaną oznaczone jako błąd. Oto przykład.

końcowa wartość całkowita = 17;

Statyczne zmienne składowe z tym modyfikatorem są używane jako stałe globalne; na przykład w zmiennej PI java.lang.Math podano to dokładnie

publiczne statyczne końcowe podwójne PI = 3,14159265358979323846;

Możemy zastosować ostateczny modyfikator do deklaracji funkcji. Funkcji oznaczonej jako finał nie można już anulować - to jest jej ostateczna implementacja. Metody abstrakcyjne nie mogą być uznane za ostateczne - fakt, że są abstrakcyjne, oznacza, że ​​brakuje ich implementacji; z pewnością nie może być ich ostatecznym stanem. Oto przykład.

public final int meanLife ()

zwrot 42;

Możemy zastosować ostateczny modyfikator do deklaracji klasy. Klasa oznaczona jako finał nie może już dziedziczyć - to jest jej ostateczna implementacja. Oczywiście klasa abstrakcyjna nie może być jednocześnie ostateczna. Oto przykład

publiczna klasa finałowa zamknięta

//…

Jednym z przykładów klas skończonych jest klasa java.lang.String - jest skończona, więc nikt nie może jej odziedziczyć i uzyskać w ten sposób dostępu do zmiennych składowych.

Co to jest statyczny?

Zmienne statyczne nie należą do konkretnego wystąpienia klasy. Zmienne statyczne należą do samej klasy, aw pamięci znajduje się tylko jedna lokalizacja, niezależnie od liczby kopii tej klasy utworzonych w pamięci. Zmienne niestatyczne należą do okazów klas - każde wystąpienie klasy ma własną kopię takich zmiennych. Zmienne statyczne należą do klasy - klasa w pamięci zachowuje wartości takich zmiennych; wszystkie przykładowe klasy widzą zatem tę samą treść, dzięki czemu możemy rozważyć dzielenie zmiennych statycznych między wszystkie rozmiary klas. Po zaktualizowaniu zmiennej wartości nowa wartość będzie automatycznie widoczna dla wszystkich instancji tej klasy. Filtr statyczny można zastosować do dowolnego elementu legalnie zadeklarowanego w klasie. W przypadku zmiennych członkostwa konsekwencja jest taka, że ​​takie zmienne składowe będą przechowywane w pamięci tylko w jednym miejscu. Co się stanie, jeśli jest to metoda? Deklarując metodę jako statyczną, komunikat jest taki sam: odpowiednia metoda nie należy do klas klas, ale do samej klasy. W związku z tym metody statyczne nie otrzymają ukrytego odniesienia do obiektu, nad którym są wywoływane przy wywołaniu; w statycznych metodach odniesienia jest to niedostępne. Rzeczywiście, wywoływanie metod statycznych w całym obiekcie jest równie mylące, jak uzyskiwanie dostępu do statycznych zmiennych składowych poprzez odwołanie się do tego odwołania: w obu przypadkach lepiej jest po prostu wpisać nazwę klasy, punkt i nazwę metody wywołującej.

Różnica między ostatecznym a statycznym

  1. Zmienna

Statyczny oznacza zmienną, która jest wspólna dla wszystkich obiektów, które tworzą instancję danej klasy, podczas gdy finał definiuje stałą.

  1. metoda

Statyczna to metoda, która jest taka sama dla każdego obiektu danej klasy - jest również nazywana członkiem klasy, np. taka jest główna metoda. Ostatecznej metody nie można przetworzyć w odziedziczonej klasie.

  1. Klasa

Finału nie można rozszerzyć, tzn. Nie zezwala na podklasy. Statyczny nie dotyczy klasy.

  1. Wartość

Mówiąc najprościej, końcowy oznacza, że ​​wartości nie można zmienić (przesłonić). Wartość statyczna jest ustawiona na wartość domyślną, ale można ją ponownie zainicjować.

Final vs. Static: Tabela porównawcza

Podsumowanie ostateczne i statyczne

  • Praca statyczna z kluczem zapewnia dostęp nawet wtedy, gdy nie ma obiektu (instancji). Wybitne klasy deklarowane są poprzez słowo kluczowe static. Jeśli nie chcesz, aby wartość niektórych zmian w programie była kontynuowana, lub jeśli chcesz, aby kompilator sprawdził i zabronił, możesz zmienić tę obietnicę na ostateczną. Istnieje blokada statyczna do inicjalizacji. Blok statyczny inicjalizacji jest zadeklarowany jako klucz statyczny przed nawiasami. Tego rodzaju blok jest wykonywany raz podczas czytania klas i zwykle inicjuje statyczne elementy klasy.