Sobes.tech
Middle

Javaда final жана finalize ачкыч сөздөрү эмне жана алардын айырмасы эмнеде?

sobes.tech AI

AIден жооп

final - ачкыч сўз, ўзгартирмасликни белгилаш учун:

  • Ўзгарувчи: Ҳавола ёки қиймат инициаллашдан кейин ўзгартирилмайди.
  • Метод: Метод қўлланилган синфда қайта ёзилмайди.
  • Класс: Класс мерос қилиб олинмайди.

finalize() - объектни хотирадан ўчиришдан олдин йиғувчи (Garbage Collector) томонидан чақириладиган метод. У Object синфида жойлашган ва ташқи ресурсларни тозалаш учун мўлжалланган.

Фарқлар:

final finalize()
Калит сўз Метод
Ўзгартирмасликни кўрсатади Объект ўчирилиши олдин чақирилади
Декларация билан боғлиқ Объектнинг ҳаёт цикли билан боғлиқ
Ўзгартиришлар, методлар, синфларга қўлланади Фақат объектларга

finalдан фойдаланиш мисоли:

public class FinalExample {
    final int finalVariable = 10;

    final void finalMethod() {
        // ўзгартирмас метод логикаси
    }
}

final class FinalClass {
    // мазмун
}

finalize()дан фойдаланиш мисоли:

public class FinalizeExample {
    @Override
    protected void finalize() throws Throwable {
        try {
            // ташқи ресурсларни тозалаш, масалан, уланишни ёпиш
            System.out.println("FinalizeExample объектини якунлаш...");
        } finally {
            super.finalize(); // Ҳаммасига super.finalize() чақиринг
        }
    }
}

Маҳз: finalize()дан фойдаланиш замонавий Javaда тавсия этилмайди, чунки унинг бажарилиш вақти олдиндан билмайди ва ишлаш самарадорлигига таъсир қилиши мумкин. Ресурсларни бошқариш учун try-with-resources блокларидан фойдаланиш маъқул.