Junior
Что такое ключевое слово final и метод finalize в Java, и в чем их отличие?
sobes.tech IA
Réponse de l'IA
Le mot-clé final est utilisé pour restreindre la modification.
- Pour les variables : la valeur de la variable ne peut pas être modifiée après l'initialisation.
- Pour les méthodes : la méthode ne peut pas être redéfinie dans une sous-classe.
- Pour les classes : la classe ne peut pas être héritée.
La méthode finalize() est une méthode de la classe Object, appelée par le ramasse-miettes juste avant la suppression de l'objet de la mémoire, offrant la dernière opportunité d'effectuer des opérations de nettoyage des ressources. Il n'y a aucune garantie que cette méthode soit appelée.
// Exemple d'utilisation de final
final int CONSTANT_VALUE = 100;
// CONSTANT_VALUE = 200; // Erreur de compilation
class BaseClass {
final void finalMethod() {
// Corps de la méthode
}
}
class DerivedClass extends BaseClass {
// @Override
// void finalMethod() { // Erreur de compilation, méthode final
// // Corps de la méthode
// }
}
final class FinalClass {
// Corps de la classe
}
// class AnotherClass extends FinalClass { // Erreur de compilation, impossible d'hériter d'une classe finale
// // Corps de la classe
// }
// Exemple d'utilisation de finalize
class Resource heavyResource; // Supposé une ressource
class MyObject {
public MyObject() {
heavyResource = new Resource(); // Initialisation de la ressource
}
@Override
protected void finalize() throws Throwable {
try {
// Nettoyage de la ressource avant la suppression de l'objet
if (heavyResource != null) {
heavyResource.release();
}
} finally {
super.finalize(); // Il est important d'appeler finalize de la classe parente
}
}
}
Différences :
| Caractéristique | final | finalize() |
|---|---|---|
| But | Restreindre la modification (immutabilité, interdiction de redéfinir/hériter) | Nettoyage des ressources avant que le ramasse-miettes ne supprime l'objet |
| Appliqué à | Variables, méthodes, classes | Méthode de la classe Object |
| Appelé | Non appelé, c'est un modificateur | Appelé par le ramasse-miettes (sans garantie) |
| Mot-clé | Oui | Non, c'est une méthode ordinaire |