Middle
Java'da final va finalize kalit so'zlari nima va ularning farqi nima?
sobes.tech AI
AIdan javob
final - kalit so'z o'zgarmaslikni belgilash uchun:
- O'zgaruvchi: Referens yoki qiymat boshlang'ichdan keyin o'zgartirilmaydi.
- Metod: Metod voris klassda qayta yozilmaydi.
- Klass: Klass meros qilib olinmaydi.
finalize() - garbage collector (axlat yig'uvchi) ob'ektni xotiradan o'chirishdan oldin chaqiriladigan metod. U Object klassida joylashgan va tashqi resurslarni bo'shatish uchun mo'ljallangan.
Farqlar:
final |
finalize() |
|---|---|
| Kalit so'z | Metod |
| O'zgarmaslikni belgilash | Ob'ekt o'chirilishidan oldin chaqiriladi |
| Deklaratsiya bilan bog'liq | Ob'ektning hayot aylanishi bilan bog'liq |
| O'zgaruvchilar, metodlar, klasslarga qo'llanadi | Faqat ob'ektlarga |
final dan foydalanish misoli:
public class FinalExample {
final int finalVariable = 10;
final void finalMethod() {
// o'zgarmas metod logikasi
}
}
final class FinalClass {
// mazmun
}
finalize() dan foydalanish misoli:
public class FinalizeExample {
@Override
protected void finalize() throws Throwable {
try {
// tashqi resurslarni tozalash, masalan, ulanishni yopish
System.out.println("FinalizeExample ob'ekti yakunlanmoqda...");
} finally {
super.finalize(); // Har doim super.finalize() chaqiring
}
}
}
Muhim: finalize() dan foydalanish zamonaviy Java da tavsiya etilmaydi, chunki uning bajarilish vaqti oldindan ma'lum emas va ishlash samaradorligiga ta'sir qilishi mumkin. Resurslarni boshqarish uchun try-with-resources bloklaridan foydalanish tavsiya etiladi.