Sobes.tech
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 είναι μια μέθοδος για καθαρισμό πριν από τη συλλογή απορριμμάτων, παρωχημένη και μη συνιστώμενη.