Sobes.tech
Junior

Что такое ключевое слово final и метод finalize в Java, и в чем их отличие?

sobes.tech AI

AIден жооп

Ключевое слово final колдонулат өзгөртүүнү чектөө үчүн:

  • Өзгөрмөлөр үчүн: өзгөрмөнүн мааниси өзгөрүлбөйт кийин инициализациядан кийин:
  • Методтор үчүн: методту подклассында кайра аныктай албайсыз:
  • Класстар үчүн: класс мураска бериле албайт:

finalize() ыкмасы Object классынын ыкмасы болуп саналат, ал жыйноочу мусорго жүктөлгөндө, объектти жоготуу алдында чакырылат жана ресурстарды тазалоо үчүн акыркы мүмкүнчүлүк берет. Бул ыкманы чакыруу кепилденбейт:

// `final` колдонуу мисалы
final int CONSTANT_VALUE = 100;
// CONSTANT_VALUE = 200; // Компиляция ката

class BaseClass {
    final void finalMethod() {
        // Методтун денеси
    }
}

class DerivedClass extends BaseClass {
    // @Override
    // void finalMethod() { // Компиляция ката, `final` метод
    //     // Методтун денеси
    // }
}

final class FinalClass {
    // Класс денеси
}

// class AnotherClass extends FinalClass { // Компиляция ката, `final` класс мураска берилбейт
//     // Класс денеси
// }
// `finalize` колдонуу мисалы
class Resource heavyResource; // Кээ бир ресурс

class MyObject {
    public MyObject() {
        heavyResource = new Resource(); // Ресурс инициализациясы
    }

    @Override
    protected void finalize() throws Throwable {
        try {
            // Объектти жоготуу алдында ресурсты тазалоо
            if (heavyResource != null) {
                heavyResource.release();
            }
        } finally {
            super.finalize(); // Ата-эненин `finalize` чакырылышы маанилүү
        }
    }
}

Атайындар:

Өзгөчөлүк final finalize()
Максаты Өзгөртүүнү чектөө (өзгөрбөөчүлүк, кайра аныктоо/мурас алуу тыюу) Ресурстарды тазалоо объектти жоготуу алдында мусор жыйнагычтан
Колдонуу Өзгөрмөлөр, методдор, класстар Object классынын ыкмасы
Чакырылат Чакырылбайт, бул модификатор Чакырылат мусор жыйнагыч тарабынан (кепилдик жок)
Ключевое слово Ооба Жок, бул жөнөкөй метод