JavaRush /Java Blogu /Random-AZ /final Java metodları və sinifləri
articles
Səviyyə

final Java metodları və sinifləri

Qrupda dərc edilmişdir
Sinif metodunu modifikatorla işarələməklə finaldemək istəyirik ki, heç bir törəmə sinif onun daxili icrasını dəyişdirərək bu metodu ləğv edə bilməz. Başqa sözlə, söhbət metodun son variantından gedir. Bütövlükdə sinfi də qeyd etmək olar final. final Java metodları və sinifləri - 1
final class NoExtending {
// …
}
kimi işarələnmiş sinif finalmiras alına bilməz və onun bütün metodları dolayı yolla mülkiyyət əldə edir final. Siniflərin və metodların elanlarında bir xüsusiyyətdən istifadə finalkodun təhlükəsizliyi səviyyəsini artıra bilər. Əgər sinif dəyişdirici ilə təchiz olunubsa final, heç kim sinfi genişləndirə bilməz və ehtimal ki, bu prosesdə onun müqaviləsini poza bilər. Bir işarə finalbir üsulu ifadə edirsə, "saxtakarlıq" qorxusu olmadan bütün hallarda onun daxili həyata keçirilməsinə tam etibar edə bilərsiniz. finalMəsələn, metodun bəyan edilməsində istifadəçinin daxil etdiyi parolun yoxlanılmasını tələb edən metoddan istifadə etmək məqsədəuyğundur . Mümkün bir təcavüzkar, proqrama onun ləğv edilmiş versiyasını "sürüşdürməklə" belə bir metodun ilkin tətbiqini dəyişdirə bilməyəcək, məsələn, nə olursa olsun, istifadəçinin uğurlu qeydiyyatını göstərən həmişə doğru dəyəri qaytarır. həqiqətən daxil etdiyi parol. finalƏgər konkret vəziyyət imkan verirsə, daha da irəli getmək və bütün sinfi sinif elan etmək hüququnuz var ; metod ValidatePasswordeyni əmlakı dolayı yolla əldə edəcək. Metod və ya sinif bəyannaməsində modifikatordan istifadə finalkodun sonrakı istifadəsi və inkişafı imkanlarına ciddi məhdudiyyətlər qoyur. finalBəyannamədə metoddan istifadə metodun həyata keçirilməsinin öz-özünə və tamamilə tamamlanmasının əmin göstəricisidir. Sinifinizdən istifadə etmək, onun funksiyalarını öz ehtiyaclarına uyğun genişləndirmək istəyən digər proqramçılar məqsədlərinə çatmaq üçün vasitələrin seçimində məhdudlaşacaq və ya onlardan tamamilə məhrum olacaqlar. finalBir sinfi bütövlükdə qeyd etməklə siz onun miras qalma qabiliyyətini ləğv edəcəksiniz və çox güman ki, onun başqaları üçün faydalılığını əhəmiyyətli dərəcədə azaldacaqsınız. Modifikatordan istifadə etməyə hazırlaşdığınız zaman finalSİZİN belə qurbanlara hazır olub-olmadığınıza və onları etməyə dəyər olub olmadığına əmin olun. Bir çox hallarda, kifayət qədər kod təhlükəsizliyi səviyyəsinə nail olmaq üçün bütün sinfi belə təyin etmək lazım deyil - yalnız onun "kritik" struktur elementlərini dəyişdirici ilə finalişarələməklə sinfin genişlənməsini qorumaq olduqca mümkündür . finalBu halda, siz sinfin əsas funksiyalarını toxunulmaz qoyacaqsınız və eyni zamanda yeni üzvlərin əlavə edilməsi ilə, lakin "köhnə" olanları yenidən təyin etmədən onun miras qalmasına icazə verəcəksiniz. Əlbəttə ki, metodların kodu ilə daxil olan sahələr öz növbəsində hər ikisi finalkimi təyin edilməlidir , çünki əks halda hər hansı törəmə sinif müvafiq metodların davranışına təsir edərək məzmununu dəyişə biləcək. Modifikatordan istifadənin digər effekti kompilyator tərəfindən həll edilən kodun optimallaşdırılması probleminin sadələşdirilməsi ilə bağlıdır. İşarələnməmiş metod çağırılanda belə olurfinalprivatefinalfinal, iş vaxtı sistemi obyektin faktiki sinfini müəyyən edir, çağırışı həddən artıq yüklənmiş metodlar qrupundan ən uyğun kodla əlaqələndirir və idarəetməni həmin koda ötürür. Lakin, məsələn, əvvəllər müzakirə edilən getNamesinif nümunəsindəki metod Attrkimi təyin olunsaydı final, onun çağırılması əməliyyatı nəzərəçarpacaq dərəcədə sadələşdirilə bilərdi. Ən əhəmiyyətsiz halda, məsələn ilə bağlı olan halda getName, tərtibçi sadəcə olaraq metod çağırışını öz bədən kodu ilə əvəz edə bilər. Bu mexanizm kodun daxil edilməsi adlanır. Metodun daxili versiyasından istifadə edərkən getNameaşağıdakı iki ifadə tam olaraq eyni şəkildə yerinə yetirilir:
system.out.println("id = " + rose.name);
system.out.println("id = " + rose.getName());
Yuxarıdakı ifadələrin ekvivalent olmasına baxmayaraq, ikincinin hələ də üstünlüyü var, çünki metod getNamead sahəsinə yalnız oxumaq üçün xassə verməyə, sinif koduna isə müəyyən dərəcədə abstraksiyaya sahib olmağa imkan verir ki, bu da daha sərbəst şəkildə dəyişdirməyə imkan verir. sinif icrası. Eyni optimallaşdırma sxemi kompilyator tərəfindən privatevə metodlarına tətbiq oluna bilər statiс, çünki onlar da ləğv etməyə imkan vermir. finalSinif bəyannamələrində modifikatordan istifadə də bəzi növ yoxlama əməliyyatlarını daha səmərəli edir. Bu halda, bir çox belə əməliyyatlar artıq tərtib mərhələsində həyata keçirilə bilər və buna görə də potensial səhvlər daha əvvəl aşkar edilir. Əgər kompilyator mənbə mətndə bir sinfə istinadla qarşılaşarsa final, müvafiq obyektin müəyyən edilmiş tipdə olduğuna "əmin" ola bilər. Kompilyator sinifin ümumi sinif iyerarxiyasında tutduğu yeri dərhal müəyyən edə və onun düzgün istifadə edilib-edilmədiyini yoxlaya bilir. Modifikator finaltətbiq edilmədikdə, müvafiq yoxlamalar yalnız proqramın icrası mərhələsində aparılır. Məşq 3.4. Son dəyişdiricinin nəqliyyat vasitəsi və sərnişin avtomobili siniflərinin metod bəyannaməsinə (və əgər belədirsə, hansılara) daxil edilməsi məqsədəuyğundurmu ? Orijinal mənbəyə keçid: http://src-code.net/metody-i-klassy-final-java
Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION