JavaRush /Java Blog /Random-TK /soňky Java usullary we synplary
articles
Dereje

soňky Java usullary we synplary

Toparda çap edildi
Üýtgediji bilen synp usulyny bellemek bilen final, hiç bir alnan synpyň içerki durmuşa geçirilişini üýtgedip, bu usuly ýok edip bilmejekdigini aňladýarys. Başgaça aýdylanda, usulyň soňky wersiýasy barada aýdýarys. Tutuşlygyna alanyňda synp hem bellik edilip bilner final. soňky Java usullary we synplary - 1
final class NoExtending {
// …
}
Miras bolup bilmeýän synp finalwe onuň ähli usullary gytaklaýyn emlägi edinýär final. Sapaklary we usullary beýan etmekde bir aýratynlygy ulanmak finalkod howpsuzlygynyň derejesini ýokarlandyryp biler. Bir synp üýtgediji bilen enjamlaşdyrylan bolsa final, hiç kim synpy uzaldyp bilmez we bu şertnamany bozup biler. Belgi bir finalusuly aňladýan bolsa, "galplykdan" gorkman, ähli ýagdaýlarda içerki durmuşa geçirilişine doly ynanyp bilersiňiz. finalMysal üçin, usulyň başda göz öňünde tutulan zadynyň takyk ýerine ýetirilmegini üpjün etmek üçin ulanyjy tarapyndan girizilen paroly tassyklamagy talap edýän usulyň beýanynda ulanmak ýerliklidir . Mümkin bolan hüjümçi, bu usulyň asyl ýerine ýetirilişini programma girip, haýsy parolyna garamazdan ulanyjynyň üstünlikli hasaba alnandygyny görkezýän, bahasynyň hakykylygyny yzyna gaýtaryp berýän programma görnüşine "süýşüp" üýtgedip bilmez. hakykatdanam girdi. finalAýratyn ýagdaý rugsat berse, has öňe gidip, tutuş synpy synp hökmünde yglan etmäge hakyňyz bar ; usul ValidatePasswordgytaklaýyn şol bir emlägi alar. Üýtgedijiniň finalusulda ýa-da synp deklarasiýasynda ulanylmagy, koduň mundan beýläk ulanylmagy we ösdürilmegi mümkinçiligine düýpli çäklendirmeler girizýär. finalJarnamada usulyň ulanylmagy, usulyň durmuşa geçirilmeginiň öz-özüne baglydygyny we dolulygyna doly görkezijidir. Synpyňyzy ulanmak isleýän, öz zerurlyklaryna laýyk gelýän funksiýalaryny giňeltmek isleýän beýleki programmistler, maksadyna ýetmek üçin serişdeleri saýlamak bilen çäklener ýa-da olardan doly mahrum ediler. Tutuşlygyna synp bellemek bilen final, onuň miras almak ukybyny öçürersiňiz we beýlekiler üçin peýdalylygyny ep-esli azaldar. Üýtgeýjini ulanjak bolanyňyzda final, şunuň ýaly gurbanlara taýynmy ýa-da gurban bermäge mynasypdygyňyzy anyklaň. Köp ýagdaýlarda kod howpsuzlygynyň ýeterlik derejesine ýetmek üçin tutuş synpy kesgitlemek hökman däl - diňe “möhüm” gurluş elementlerini üýtgediji bilen finalbelläp, synpyň giňelmegini saklamak mümkin . finalBu ýagdaýda synpyň esasy wezipelerini saklarsyňyz we şol bir wagtyň özünde täze agzalaryň goşulmagy bilen mirasa rugsat berersiňiz, ýöne "köne "lerini kesgitlemezden. Elbetde, usullaryň kody bilen girilýän meýdanlar hem öz gezeginde finalkesgitlenmeli , sebäbi bolmasa islendik alnan synp degişli usullaryň özüni alyp barşyna täsir edip, mazmunyny üýtgedip biler. Üýtgeýjini ulanmagyň başga bir täsiri, düzüji tarapyndan çözülen kod optimizasiýasyny ýönekeýleşdirmek bilen baglanyşykly. Bu atlandyrylyşy ýaly bellenmedik usul bolanda bolýarfinalprivatefinalfinal, iş wagty ulgamy obýektiň hakyky synpyny kesgitleýär, jaňy artykmaç usullar toparyndan iň laýyk kod bilen baglanyşdyrýar we gözegçiligi şol koda geçirýär. Emma, ​​mysal üçin, ozal ara alnyp maslahatlaşylan getNamesynpdaky usul Attrkesgitlenen bolsa final, oňa jaň etmek işi ep-esli ýönekeýleşdirilen bolmagy mümkin. Iň ownuk ýagdaýda, meselem getName, düzüjiniň usuly çagyryşyny beden kody bilen çalşyp biler. Bu mehanizme kod çyzgysy diýilýär. Usulyň içerki wersiýasy ulanylanda, getNameaşakdaky iki aňlatma birmeňzeş ýerine ýetirilýär:
system.out.println("id = " + rose.name);
system.out.println("id = " + rose.getName());
Aboveokardaky aňlatmalar deň bolsa-da, ikinjisiniň henizem artykmaçlygy bar, sebäbi usul getNameat meýdanyna diňe okalýan emläk bermäge mümkinçilik berýär we synp koduny belli bir derejede abstraksiýa almaga mümkinçilik berýär, bu bolsa has erkin üýtgetmäge mümkinçilik berýär. synpy durmuşa geçirmek. Şol bir optimizasiýa shemasy düzüji tarapyndan usullara privatewe usullara ulanylyp bilner statiс, sebäbi olar hem artykmaçlyga ýol bermeýärler. finalSynp deklarasiýalarynda üýtgediji ulanmak, käbir görnüşli barlag amallaryny has netijeli edýär. Bu ýagdaýda şeýle amallaryň köpüsi ýygnamak tapgyrynda eýýäm ýerine ýetirilip bilner we şonuň üçin ähtimal ýalňyşlyklar has ir ýüze çykarylýar. Eger düzüji deslapky tekstdäki bir klasa salgylanma bilen ýüzbe-ýüz bolsa final, degişli obýektiň görkezilen görnüşdigine "ynamly" bolup biler. Düzüji umumy synp iýerarhiýasyndaky bir synpyň eýeleýän ýerini derrew kesgitläp we dogry ulanylandygyny ýa-da ýokdugyny barlap bilýär. Üýtgediji finalulanylmasa, degişli barlaglar diňe programmanyň ýerine ýetiriş tapgyrynda geçirilýär. 3.4- nji maşk . Iň soňky üýtgedijini ulagyň we ýolagçy ulaglarynyň synplarynyň usul deklarasiýalaryna (we şeýle bolsa, haýsylary) girizmek maslahat berilýärmi ? Asyl çeşmä baglanyşyk: http://src-code.net/metody-i-klassy-final-java
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION