Junior
Τι είναι οι λέξεις-κλειδιά final και finalize στη Java, και ποια είναι οι διαφορές τους;
sobes.tech AI
Απάντηση από AI
Στη Java, το final και το finalize είναι διαφορετικές έννοιες με διαφορετικούς σκοπούς:
- Το
finalείναι μια λέξη-κλειδί που χρησιμοποιείται για να δηλώσει:- Σταθερές (μεταβλητές που δεν μπορούν να αλλάξουν μετά την αρχικοποίηση).
- Μεθόδους που δεν μπορούν να υπερισχύσουν σε υποκλάσεις.
- Κλάσεις που δεν μπορούν να κληρονομηθούν.
Παράδειγμα:
final int x = 10; // το x δεν μπορεί να αλλάξει
final class MyClass {} // η κλάση δεν μπορεί να κληρονομηθεί
final void myMethod() {} // η μέθοδος δεν μπορεί να υπερισχύσει
- Το
finalize()είναι μια μέθοδος της κλάσηςObject, που καλείται από τον συλλέκτη απορριμμάτων πριν διαγραφεί το αντικείμενο από τη μνήμη. Προορίζεται για την απελευθέρωση πόρων, αλλά η χρήση του δεν συνιστάται, καθώς η κλήση του δεν είναι εγγυημένη και μπορεί να οδηγήσει σε απρόβλεπτη συμπεριφορά.
Παράδειγμα:
@Override
protected void finalize() throws Throwable {
// απελευθέρωση πόρων
super.finalize();
}
Διαφορές:
- Το
finalείναι μια λέξη-κλειδί για τον έλεγχο της τροποποίησης του κώδικα. - Το
finalizeείναι μια μέθοδος για καθαρισμό πριν από τη συλλογή απορριμμάτων, παρωχημένη και μη συνιστώμενη.