Junior
Что такое ключевое слово final и метод finalize в Java, и в чем их отличие?
sobes.tech yapay zeka
AI'dan gelen yanıt
Anahtar kelime final, değişikliği sınırlamak için kullanılır.
- Değişkenler için: Değişkenin değeri, başlatıldıktan sonra değiştirilemez.
- Yöntemler için: Yöntem, alt sınıfta yeniden tanımlanamaz.
- Sınıflar için: Sınıf kalıtılamaz.
finalize() yöntemi, Object sınıfının bir yöntemidir ve nesne bellekten silinmeden hemen önce çöp toplayıcı tarafından çağrılır, kaynak temizleme işlemlerini gerçekleştirmek için son fırsatı sağlar. Bu yöntemin çağrılacağına dair garanti yoktur.
// final kullanımı örneği
final int CONSTANT_VALUE = 100;
// CONSTANT_VALUE = 200; // Derleme hatası
class BaseClass {
final void finalMethod() {
// Yöntem gövdesi
}
}
class DerivedClass extends BaseClass {
// @Override
// void finalMethod() { // Derleme hatası, final yöntem
// // Yöntem gövdesi
// }
}
final class FinalClass {
// Sınıf gövdesi
}
// class AnotherClass extends FinalClass { // Derleme hatası, final sınıf kalıtılamaz
// // Sınıf gövdesi
// }
// finalize() kullanımı örneği
class Resource heavyResource; // Bir kaynak varsayılır
class MyObject {
public MyObject() {
heavyResource = new Resource(); // Kaynak başlatılır
}
@Override
protected void finalize() throws Throwable {
try {
// Nesne silinmeden önce kaynağı temizle
if (heavyResource != null) {
heavyResource.release();
}
} finally {
super.finalize(); // super.finalize() çağrısı önemlidir
}
}
}
Farklar:
| Özellik | final | finalize() |
|---|---|---|
| Amacı | Değişikliği sınırlandırmak (değişmezlik, yeniden tanımlama/kalıtım yasağı) | Nesne silinmeden önce kaynakları temizleme |
| Uygulanabilir olduğu yerler | Değişkenler, yöntemler, sınıflar | Object sınıfının yöntemi |
| Çağrılır mı | Çağrılmaz, bir modifikatördür | Çöp toplayıcı tarafından çağrılır (garanti yok) |
| Anahtar kelime | Evet | Hayır, normal bir yöntemdir |