Wykres porównania
Podstawa do porównania | Finał | Wreszcie | Sfinalizować |
---|---|---|---|
Podstawowy | Finał to "Słowo kluczowe" i "modyfikator dostępu" w Javie. | Wreszcie jest "blok" w Javie. | Finalize jest "metodą" w Javie. |
Odpowiedni | Finał to słowo kluczowe mające zastosowanie do klas, zmiennych i metod. | Wreszcie jest blok, który jest zawsze związany z blokiem try i catch. | finalize () to metoda stosowana do obiektów. |
Pracujący | (1) Zmienna końcowa staje się stała i nie można jej przypisać ponownie. (2) Ostateczna metoda nie może być nadpisana przez klasę potomną. (3) Klasy końcowej nie można przedłużać. | Blok "finally", wyczyść zasoby użyte w bloku "try". | Finalizacja metody wykonuje czyszczenie działań związanych z obiektem przed jego zniszczeniem. |
Wykonanie | Ostateczna metoda jest wykonywana po jej wywołaniu. | Blok "finally" jest wykonywany zaraz po wykonaniu bloku "try-catch". | Metoda finalize () jest wykonywana tuż przed zniszczeniem obiektu. |
Definicja finału
"Final" to słowo kluczowe w języku Java. Jest to modyfikator dostępu. Słowo kluczowe "ostateczny" odnosi się do klas, metod i zmiennych. Zobaczmy, jak to działa z każdym z nich.
Zmienna końcowa
- Gdy końcowe słowo kluczowe zostanie zastosowane do zmiennej, nie można jej dalej modyfikować.
- Ostatnia zmienna musi zostać zainicjalizowana po jej zadeklarowaniu.
- We wspólnej konwencji kodowania, ostateczne zmienne są zadeklarowane w UPPERCASE.
- Ostatnia zmienna nie zajmuje pamięci w zależności od instancji.
końcowy int FILE_OPEN = 2;
Końcowe metody
- Gdy metoda w klasie jest zadeklarowana jako ostateczna, nie można jej przesłonić przez jej podklasę.
- Małe metody, które są zadeklarowane jako ostateczne, mogą zostać "wstawione" przez kompilator, co zmniejszy narzut funkcji wywoływania i zwiększy ulepszenia wydajności.
- Nadpisane wywołania metod są rozwiązywane dynamicznie, ale gdy metoda jest zadeklarowana jako ostateczna, nie można jej przesłonić. Dlatego wywołanie funkcji może zostać rozwiązane w czasie kompilacji.
class A {final void meth () {System.out.println ("To jest metoda ostateczna."); }} klasa B extends A {void meth () {// Clas B nie może odziedziczyć metody klasy A. System.out.println ("Nie przesłonię"); }}
Klasa końcowa
- Gdy klasa jest zadeklarowana jako ostateczna, nie może być dziedziczona przez żadną podklasę.
- Zgłoszenie klasy jako ostatecznej automatycznie ogłosi wszystkie jej metody ostateczne.
- Nie możesz zadeklarować klasy jako "abstrakcyjnej" i "ostatecznej".
final class A {// ...} klasa B rozszerza A {// klasa B nie może dziedziczyć klasy A // ...}
Definicja na końcu
- W Javie "finally" jest blokiem, który zawsze jest powiązany z blokiem try / catch.
- Blok "finally" jest wykonywany po bloku try / catch i przed kodem następującym po bloku try / catch.
- Blok "finally" wykona, czy wyjątek zostanie zgłoszony, czy nie.
- Kiedy zostanie zgłoszony wyjątek, a żaden blok catch nie będzie nawet wtedy pasował do wyjątku, wykonywany jest blok "finally".
- Kiedy metoda wraca do wywołującego z wnętrza bloku prób / catch przez nieprzechwycony wyjątek lub wyraźną instrukcję return, blok "finally" zostaje wykonany tuż przed powrotem metody do wywołującego.
- Blok "finally" służy do czyszczenia zasobów lub zwolnienia pamięci używanej w bloku "try".
- Blok "finally" jest opcjonalny, ale dobrą praktyką jest napisanie bloku finally po bloku try / catch.
class FinalExample {// Ta metoda wyrzuca wyjątek z metody. static void procA () {spróbuj {System.out.println ("wewnątrz procA"); rzucić nowy RuntimeException ("demo"); } wreszcie {System.out.println ("ProcA's finally"); }} // Powrót z bloku try. static void procB () {spróbuj {System.out.println ("wewnątrz procB"); powrót; } wreszcie {System.out.println ("ProcB's finally"); }} // Wykonaj normalnie blok try. static void procC () {spróbuj {System.out.println ("wewnątrz procC"); } wreszcie {System.out.println ("procC's finally"); }} public static void main (String args []) {spróbuj {procA (); } catch (Exception e) {System.out.println ("Złapany wyjątek"); } procB (); procC (); }} // output inside procA procA's finally Wyjątek złapany wewnątrz procB procB's wreszcie wewnątrz procC procC's wreszcie
Definicja finalizacji
- Finalize jest metodą w klasie obiektu.
- Obiekt może zawierać pewne zasoby inne niż java, takie jak uchwyt pliku; następnie musi zostać uwolniony, zanim zostanie zniszczony.
- Ta metoda jest wywoływana przez garbage collector, zanim całkowicie zniszczy obiekt.
- Ta metoda wykonuje czynności czyszczenia obiektu przed jego zniszczeniem.
Ogólna forma metody finalize () jest następująca.
protected void finalize () {// kod zakończenia tutaj}
Metoda finalizacji jest deklarowana jako chroniona, więc nie można uzyskać do niej dostępu spoza klasy.
Ta metoda jest zawsze wywoływana przed zbieraniem śmieci.
Kluczowe różnice między finałem, finałem i finalizacją
- Słowo kluczowe "końcowy" jest modyfikatorem dostępu, w końcu jest blokiem a sfinalizowanie jest metodą.
- Słowo kluczowe final odnosi się do klas, zmiennych i metod klas, wreszcie jest blokiem związanym z blokiem catch catch, który jest używany do obsługi wyjątków, finalize to metoda działająca tylko na obiektach.
- Zmienna raz zadeklarowana jako ostateczna staje się stała i nie może być ponownie przypisana, metoda zadeklarowana jako ostateczna nie może zostać zmieniona, a klasa raz zadeklarowana jako ostateczna nigdy nie może być dziedziczona. Blok finally służy do czyszczenia zasobów wykorzystywanych przez blok try i catch. Metoda finalizacji służy do czyszczenia zasobów używanych przez obiekt przed zniszczeniem obiektu.
Wniosek:
Końcowe, końcowe i końcowe ma inny efekt, gdy stosuje się metodę.