Różnica między ostatecznym, ostatecznym i finalizowanym w Javie
Zawartość
- Wykres porównania
- Definicja finału
- Ostateczna zmienna
- Ostateczne metody
- Klasa finałowa
- Definicja finalizacji
- Wniosek:
Słowa „ostateczny, wreszcie i finalizujący” leżą w obrębie języka Java. Każdy z nich ma inne funkcjonowanie. Podstawowa różnica między ostatecznym, ostatecznym i ostatecznym jest taka finał jest modyfikatorem dostępu, Wreszcie jest blokiem i sfinalizować jest metodą klasy obiektowej. Istnieją inne różnice między ostatecznym, ostatecznym i ostatecznym, które są omówione w tabeli porównawczej.
- Wykres porównania
- Definicja
- Kluczowe różnice
- Wniosek
Wykres porównania
Podstawa do porównania | Finał | Wreszcie | Sfinalizować |
---|---|---|---|
Podstawowy | Final to „Słowo kluczowe” i „modyfikator dostępu” w Javie. | Wreszcie jest „blokiem” w Javie. | Finalizacja to „metoda” w Javie. |
Odpowiedni | Finał jest słowem kluczowym stosowanym do klas, zmiennych i metod. | Wreszcie jest blok, który zawsze jest powiązany z blokiem try-catch. | finalize () jest metodą stosowaną do obiektów. |
Pracujący | (1) Zmienna końcowa staje się stała i nie można jej ponownie przypisać. (2) Ostateczna metoda nie może zostać zastąpiona przez klasę potomną. (3) Klasy końcowej nie można przedłużyć. | Blok „w końcu”, oczyść zasoby użyte w bloku „wypróbuj”. | Metoda Finalize wykonuje czynności związane z czyszczeniem obiektu przed jego zniszczeniem. |
Wykonanie | Ostateczna metoda jest wykonywana po jej wywołaniu. | Blok „Wreszcie” jest wykonywany tuż po wykonaniu bloku „try-catch”. | Metoda finalize () jest wykonywana tuż przed zniszczeniem obiektu. |
Definicja finału
„Final” jest słowem kluczowym w Javie. Jest to modyfikator dostępu. Słowo kluczowe „końcowe” dotyczy klas, metod i zmiennych. Zobaczmy, jak to działa z każdym z nich.
Ostateczna zmienna
- Kiedy ostatnie słowo kluczowe zostanie zastosowane do zmiennej, nie będzie można jej dalej modyfikować.
- Ostateczna zmienna musi zostać zainicjowana, kiedy zostanie zadeklarowana.
- We wspólnej konwencji kodowania zmienne końcowe są zadeklarowane jako WIELKIE LITERY.
- Ostatnia zmienna nie zajmuje pamięci dla poszczególnych instancji.
Ostateczne metody
- Gdy metoda w klasie jest zadeklarowana jako końcowa, nie można jej przesłonić podklasą.
- Małe metody, które są deklarowane jako ostateczne, mogą zostać „wbudowane” przez kompilator, co zmniejszy narzut wywołania funkcji i zwiększy wydajność.
- Wywołanie zastąpionych metod jest rozwiązywane dynamicznie, ale gdy metoda zostanie zadeklarowana jako ostateczna, nie można jej zastąpić. Dlatego wywołanie funkcji można rozwiązać podczas kompilacji.
klasa A {final void met () {System.out.ln („Jest to metoda ostateczna.”); }} klasa B rozszerza A {void met () {// Klasy B nie mogą dziedziczyć metody klasy A. System.out.ln („Nie zastępuje”); }}
Klasa finałowa
- Gdy klasa jest zadeklarowana jako ostateczna, nie może być dziedziczona przez żadną podklasę.
- Uznanie klasy za ostateczną spowoduje automatyczne uznanie wszystkich jej metod za ostateczne.
- Nie można zadeklarować klasy jako „abstrakcyjnej” i „ostatecznej”.
klasa końcowa A {// ...} klasa B rozszerza A {// Klasa B nie może odziedziczyć klasy A // ...}
- W Javie „w końcu” jest blokiem, który zawsze jest powiązany z blokiem try / catch.
- Blok „w końcu” jest wykonywany po bloku try / catch i przed kodem po bloku try / catch.
- Blok „w końcu” zostanie wykonany niezależnie od tego, czy wyjątek zostanie zgłoszony, czy nie.
- Gdy zgłoszony zostanie wyjątek i żaden blok catch nie pasuje do wyjątku nawet wtedy, blok „w końcu” jest wykonywany.
- Kiedy metoda wraca do dzwoniącego z bloku try / catch przez nieprzechwycony wyjątek lub jawną instrukcję return, blok „w końcu” zostaje wykonany tuż przed powrotem metody do dzwoniącego.
- Blok „w końcu” służy do czyszczenia zasobów lub zwalniania pamięci używanej w bloku „try”.
- Blok „w końcu” jest opcjonalny, ale dobrą praktyką jest pisanie bloku w końcu po bloku try / catch.
klasa Wreszcie Przykład {// Ta metoda wyrzuca wyjątek z metody. static void procA () {try {System.out.ln („inside procA”); wrzuć nowy wyjątek RuntimeException („demo”); } Wreszcie {System.out.ln („procAs Wreszcie”); }} // Wróć z wewnątrz bloku try. static void procB () {try {System.out.ln („inside procB”); powrót; } w końcu {System.out.ln („w końcu procBs”); }} // Wykonaj blok try normalnie. static void procC () {try {System.out.ln („inside procC”); } w końcu {System.out.ln („w końcu procCs”); }} public static void main (String args) {try {procA (); } catch (wyjątek e) {System.out.ln („Złapany wyjątek”); } procB (); procC (); }} // wyjście wewnątrz procA procA w końcu Wyjątek złapany w procB procB w końcu wewnątrz procC procC w końcu
Definicja finalizacji
- Finalizacja jest metodą w klasie obiektów.
- Obiekt może przechowywać niektóre zasoby inne niż Java, takie jak uchwyt pliku; wtedy trzeba go uwolnić, zanim zostanie zniszczony.
- Ta metoda jest wywoływana przez śmietnik, zanim całkowicie zniszczy obiekt.
- Ta metoda wykonuje czynności czyszczenia dla obiektu przed jego zniszczeniem.
Ogólna forma metody finalize () jest następująca.
protected void finalize () {// kod finalizacji tutaj}
Metoda finalizacji jest zadeklarowana jako chroniona, aby nie można było uzyskać do niej dostępu spoza klasy.
Ta metoda jest zawsze wywoływana przed odśmiecaniem pamięci.
- Słowo kluczowe final jest modyfikatorem dostępu, w końcu jest blokiem, a finalizacja jest metodą.
- Słowo kluczowe final ma zastosowanie do klas, zmiennych i metod klas, wreszcie jest blokiem skojarzonym z blokiem try catch, który służy do obsługi wyjątków, finalizacja jest metodą działającą tylko na obiektach.
- Zmienna raz zadeklarowana jako końcowa staje się stała i nie można jej ponownie przypisać, metody zadeklarowanej jako ostateczna nie można zastąpić, a klasy raz zadeklarowanej jako ostateczna nigdy nie można odziedziczyć. Ostatecznie blok służy do czyszczenia zasobów wykorzystywanych przez try i catch block. Metoda finalizacji służy do czyszczenia zasobów używanych przez obiekt przed zniszczeniem obiektu.
Wniosek:
Ostateczny, wreszcie i finalizujący ma inny efekt, gdy zostanie zastosowany do metody.