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 классынын ыкмасы |
| Чакырылат | Чакырылбайт, бул модификатор | Чакырылат мусор жыйнагыч тарабынан (кепилдик жок) |
| Ключевое слово | Ооба | Жок, бул жөнөкөй метод |