Junior
Что такое ключевое слово final и метод finalize в Java, и в чем их отличие?
sobes.tech AI
AIdan javob
Açar söz final, dəyişiklikləri məhdudlaşdırmaq üçün istifadə olunur.
- Dəyişənlər üçün: dəyişənin dəyəri, ilkinləşdirildikdən sonra dəyişdirilə bilməz.
- Yöntəmlər üçün: metod, alt sinifdə yenidən təyin edilə bilməz.
- Siniflər üçün: sinif miras alınmaz.
finalize() metodu, Object sinifinin bir metodudur və yaddaşdan obyekt silinməzdən əvvəl çöp toplayıcı tərəfindən çağrılır, resursların təmizlənməsi üçün son fürsət verir. Bu metodun çağrılacağına dair heç bir zəmanət yoxdur.
// final istifadəsi nümunəsi
final int CONSTANT_VALUE = 100;
// CONSTANT_VALUE = 200; // Tərtib səhvi
class BaseClass {
final void finalMethod() {
// Metodun gövdəsi
}
}
class DerivedClass extends BaseClass {
// @Override
// void finalMethod() { // Tərtib səhvi, final metod
// // Metodun gövdəsi
// }
}
final class FinalClass {
// Sinifin gövdəsi
}
// class AnotherClass extends FinalClass { // Tərtib səhvi, final sinifdən miras alınmaz
// // Sinifin gövdəsi
// }
// finalize() istifadəsi nümunəsi
class Resource heavyResource; // Bir resurs
class MyObject {
public MyObject() {
heavyResource = new Resource(); // Resursun başlanğıcı
}
@Override
protected void finalize() throws Throwable {
try {
// Obyekt silinməzdən əvvəl resursu təmizləyin
if (heavyResource != null) {
heavyResource.release();
}
} finally {
super.finalize(); // super.finalize() çağırılması vacibdir
}
}
}
Fərqlər:
| Xüsusiyyət | final | finalize() |
|---|---|---|
| Məqsəd | Dəyişiklikləri məhdudlaşdırmaq (dəyişməzlik, yenidən təyin etmə/qorumaq) | Obyekt silinməzdən əvvəl resursların təmizlənməsi |
| Tətbiq olunan | Dəyişənlər, metodlar, siniflər | Object sinifinin metodu |
| Çağırılır | Çağırılmır, bu bir modifikatordur | Çöp toplayıcı tərəfindən çağrılır (zəmanət yoxdur) |
| Açar söz | Bəli | Xeyr, bu adi bir metoddur |