Üý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
.
final class NoExtending {
// …
}
Miras bolup bilmeýän synp final
we onuň ähli usullary gytaklaýyn emlägi edinýär final
. Sapaklary we usullary beýan etmekde bir aýratynlygy ulanmak final
kod howpsuzlygynyň derejesini ýokarlandyryp biler. Bir synp üýtgediji bilen enjamlaşdyrylan bolsa final
, hiç kim synpy uzaldyp bilmez we bu şertnamany bozup biler. Belgi bir final
usuly aňladýan bolsa, "galplykdan" gorkman, ähli ýagdaýlarda içerki durmuşa geçirilişine doly ynanyp bilersiňiz. final
Mysal üç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. final
Aýratyn ýagdaý rugsat berse, has öňe gidip, tutuş synpy synp hökmünde yglan etmäge hakyňyz bar ; usul ValidatePassword
gytaklaýyn şol bir emlägi alar. Üýtgedijiniň final
usulda ýa-da synp deklarasiýasynda ulanylmagy, koduň mundan beýläk ulanylmagy we ösdürilmegi mümkinçiligine düýpli çäklendirmeler girizýär. final
Jarnamada 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 final
belläp, synpyň giňelmegini saklamak mümkin . final
Bu ý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 final
kesgitlenmeli , 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ýarfinal
private
final
final
, 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 getName
synpdaky usul Attr
kesgitlenen 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, getName
aş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 getName
at 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 private
we usullara ulanylyp bilner statiс
, sebäbi olar hem artykmaçlyga ýol bermeýärler. final
Synp 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 final
ulanylmasa, 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
GO TO FULL VERSION