
Цомпарисон Цхарт
Основа за поређење | Коначни | Коначно | Финализе |
---|---|---|---|
Басиц | Финал је "Кеиворд" и "модификатор приступа" у Јави. | Коначно је "блок" у Јави. | Финализовати је "метода" у Јави. |
Примјењиво | Финал је кључна ријеч која се примјењује на класе, варијабле и методе. | На крају је блок који је увек повезан са блоцк и три и цатцх. | финализе () је метода применљива на објекте. |
Рад | (1) Коначна варијабла постаје константна и не може се прерасподијелити. (2) Коначна метода не може бити надјачана од стране класе подређене. (3) Завршна класа се не може продужити. | Блок "коначно", очисти ресурсе који се користе у блоку "покушај". | Метод Финализира врши чишћење активности везаних за објекат прије његовог уништења. |
Извршење | Завршни метод се извршава по његовом позиву. | Блок "Коначно" извршава се одмах након извршења "три-цатцх" блока. | метода финализе () извршава се непосредно пре уништења објекта. |
Дефиниција финала
“Финал” је кључна реч у Јави. То је модификатор приступа. Кључна реч "коначна" је применљива на класе, методе и променљиве. Погледајмо како то функционира са сваким од њих.
Финал Вариабле
- Када се примењује коначна кључна реч на променљиву, она се не може даље модификовати.
- Коначна варијабла мора бити иницијализована када је декларисана.
- У заједничкој конвенцији кодирања, коначне варијабле се декларишу у УППЕРЦАСЕ.
- Коначна варијабла не заузима меморију на бази инстанце.
финал инт ФИЛЕ_ОПЕН = 2;
Финал Метходс
- Када је метода у класи декларисана као коначна, она се не може надјачати подкласом.
- Мале методе које су проглашене коначним могу бити направљене "инлине" од стране компајлера што ће смањити оптерећење функције позива и повећати побољшања перформанси.
- Позив надјачаних метода, решава се динамички, али када је метода декларисана као коначна, не може се поништити. Дакле, позивање функције се може ријешити за вријеме компајлирања.
цласс А {финал воид метх () {Систем.оут.принтлн ("Ово је коначна метода."); }} класа Б проширује {воид метх () {// Цлас Б не може наследити метод класе А. Систем.оут.принтлн ("Не преписује"); }}
Финал Цласс
- Када је класа декларисана као коначна, онда је не може наследити ниједна подкласа.
- Проглашавање класе као коначне аутоматски ће прогласити све њене методе коначним.
- Не можете да прогласите класу “апстрактном” и “коначном”.
финална класа А {// ...} класа Б проширује А {// Класа Б не може наследити класу А // ...}
Дефиниција на крају
- У Јави "коначно" је блок који је увек повезан са три / цатцх блоком.
- Блок "коначно" се извршава након блока три / цатцх и пре кода који следи три / цатцх блок.
- Блок "коначно" ће извршити да ли је изузетак избачен или не.
- Када је избачен изузетак, а ниједан блок за хватање не одговара изузетку чак и тада, извршава се блок "коначно".
- Када се метод врати позиваоцу из пробног / цатцх блока преко унцаугхт изузетка или експлицитног ретурн израза, блок "коначно" се извршава непосредно пре него што се метод врати позиваоцу.
- Блок "коначно" се користи за чишћење ресурса или ослобађање меморије која се користи у блоку "покушај".
- Блок "коначно" је опционалан, али је добра пракса да се напокон напише блок након пробног / цатцх блока.
цласс ФиналлиЕкампле {// Ова метода баца изузетак из методе. статиц воид процА () {три {Систем.оут.принтлн ("унутар процА"); бацање новог РунтимеЕкцептион ("демо"); } коначно {Систем.оут.принтлн ("процА'с финалли"); }} // Повратак из пробног блока. статиц воид процБ () {покушај {Систем.оут.принтлн ("унутар процБ"); ретурн; } коначно {Систем.оут.принтлн ("процБ'с финалли"); }} // Извршите пробни блок нормално. статиц воид процЦ () {три {Систем.оут.принтлн ("унутар процЦ"); } коначно {Систем.оут.принтлн ("процЦ'с финалли"); }} публиц статиц воид маин (Стринг аргс []) {три {процА (); } цатцх (Екцептион е) {Систем.оут.принтлн ("Екцептион цаугхт"); } процБ (); процЦ (); }} // излаз унутар процА процА је коначно Екцептион ухваћен унутар процБ процБ је коначно унутар процЦ процЦ коначно
Дефиниција финализације
- Финализирање је метода у класи објекта.
- Објект може садржавати неке не-јава ресурсе као што је филе хандле; онда мора бити ослобођен пре него што буде уништен.
- Овај метод се позива од стране сакупљача смећа пре него што потпуно уништи објекат.
- Овај метод обавља активности чишћења објекта пре него што се уништи.
Општи облик методе финализе () је као што следи.
протецтед воид финализе () {// овде финализира код}
Метода финализације је декларисана као заштићена тако да јој се не може приступити изван класе.
Овај метод се увек позива пре сакупљања смећа.
Кључне разлике између финала, финала и финализације
- Кључна реч финал је модификатор приступа, коначно је блок и финализује се методом.
- Кључна ријеч финал је примјењива на класе, варијабле и методе класа, коначно је блок повезан с три цатцх блоком који се користи за руковање изнимкама, финализирање је метода која ради само на објектима.
- Варијабла једном декларисана као финал постаје константна и не може се поново доделити, метода декларисана као коначна не може бити поништена, а класа једном декларисана као коначна никада не може бити наслеђена. Блок за коначно се користи за чишћење ресурса које користи пробни и ухватни блок. Метода финализације се користи за чишћење ресурса које користи објекат пре него што је објекат уништен.
Закључак:
Коначни, коначно и финализовани има различит ефекат када се примени на методу.