Junior
Что такое ключевое слово final и метод finalize в Java, и в чем их отличие?
sobes.tech AI
Atbilde no AI
Atslēgvārds final tiek izmantots, lai ierobežotu modifikāciju:
- Mainīgajiem: mainīgā vērtība nevar tikt mainīta pēc inicializācijas.
- Metodēm: metodi nevar pārrakstīt apakšklasē.
- Klasēm: klasi nevar manto.
Metode finalize() ir Object klases metode, kas tiek izsaukta atkritumu savācējs tieši pirms objekta dzēšanas no atmiņas, dodot pēdējo iespēju notīrīt resursus. Šīs metodes izsaukšana nav garantēta:
// Piemērs `final` lietošanai
final int CONSTANT_VALUE = 100;
// CONSTANT_VALUE = 200; // Kompilācijas kļūda
class BaseClass {
final void finalMethod() {
// Metodes saturs
}
}
class DerivedClass extends BaseClass {
// @Override
// void finalMethod() { // Kompilācijas kļūda, `final` metode
// // Metodes saturs
// }
}
final class FinalClass {
// Klases saturs
}
// class AnotherClass extends FinalClass { // Kompilācijas kļūda, nevar manto `final` klasi
// // Klases saturs
// }
// Piemērs `finalize`
class Resource heavyResource; // Resurss
class MyObject {
public MyObject() {
heavyResource = new Resource(); // Resursa inicializācija
}
@Override
protected void finalize() throws Throwable {
try {
// Resursa tīrīšana pirms objekta dzēšanas
if (heavyResource != null) {
heavyResource.release();
}
} finally {
super.finalize(); // Svarīgi izsaukt vecā `finalize`
}
}
}
Atšķirības:
| Īpašība | final | finalize() |
|---|---|---|
| Mērķis | Modifikācijas ierobežojums (neizmaināmība, pārrakstīšanas/mantošanas aizliegums) | Resursu tīrīšana pirms objekta dzēšanas atkritumu savācējs |
| Pielietojums | Mainīgajiem, metodēm, klasēm | Object klases metode |
| Izsaukšana | Nekad, tas ir modifikators | Izsauc atkritumu savācējs (bez garantijas) |
| Atslēgvārds | Jā | Nē, tas ir parasts metode |