JavaRush /Java Blog /Random-TL /panghuling mga pamamaraan at klase ng Java
articles
Antas

panghuling mga pamamaraan at klase ng Java

Nai-publish sa grupo
Sa pamamagitan ng pagtukoy sa isang paraan ng klase na may modifier final, ang ibig naming sabihin ay walang nagmula na klase ang makakapag-override sa pamamaraang ito sa pamamagitan ng pagbabago sa panloob na pagpapatupad nito. Sa madaling salita, pinag-uusapan natin ang huling bersyon ng pamamaraan. Ang klase sa kabuuan ay maaari ding markahan bilang final. panghuling pamamaraan at klase ng Java - 1
final class NoExtending {
// …
}
Ang isang klase na minarkahan bilang finalay hindi maaaring mamana at lahat ng mga pamamaraan nito ay hindi direktang nakakakuha ng ari-arian final. Ang paggamit ng tampok finalsa mga deklarasyon ng mga klase at pamamaraan ay maaaring tumaas ang antas ng seguridad ng code. Kung ang isang klase ay nilagyan ng modifier final, walang makakapagpalawig sa klase at malamang na masira ang kontrata nito sa proseso. Kung ang isang palatandaan finalay nagpapahiwatig ng isang paraan, maaari mong lubos na mapagkakatiwalaan ang panloob na pagpapatupad nito sa lahat ng mga sitwasyon nang walang takot sa "pamemeke". Angkop na gamitin ang final, halimbawa, sa deklarasyon ng isang paraan na nangangailangan ng pag-verify ng password na ipinasok ng user upang matiyak na ang eksaktong pagpapatupad ng kung ano ang orihinal na nilayon ng pamamaraan. Ang isang posibleng attacker ay hindi magagawang baguhin ang orihinal na pagpapatupad ng naturang pamamaraan sa pamamagitan ng "pagdulas" sa programa ng isang overridden na bersyon nito, na, sabihin nating, palaging nagbabalik ng halaga na totoo, na nagpapahiwatig ng matagumpay na pagpaparehistro ng user, anuman ang password pumasok talaga siya. Mayroon kang karapatan, kung pinapayagan ng partikular na sitwasyon, na pumunta pa at ideklara finalang buong klase bilang isang klase; ang pamamaraan ValidatePassworday makakakuha ng parehong pag-aari nang hindi direkta. Ang paggamit ng modifier finalsa isang paraan o deklarasyon ng klase ay nagpapataw ng mga seryosong paghihigpit sa posibilidad ng karagdagang paggamit at pagbuo ng code. Ang paggamit ng finalisang paraan sa isang deklarasyon ay isang tiyak na tagapagpahiwatig na ang pagpapatupad ng pamamaraan ay may sarili at ganap na kumpleto. Ang iba pang mga programmer na gustong gamitin ang iyong klase, na nagpapalawak ng mga function nito upang umangkop sa kanilang sariling mga pangangailangan, ay malilimitahan sa pagpili ng mga paraan upang makamit ang kanilang layunin o ganap na pagkakaitan ng mga ito. Sa pamamagitan ng pagmamarka finalsa isang klase sa kabuuan, hindi mo paganahin ang kakayahang mamanahin at malamang na makabuluhang bawasan ang pagiging kapaki-pakinabang nito sa iba. Kapag gagamitin mo na ang modifier final, tiyaking handa ka na para sa mga ganoong sakripisyo at kung sulit ba itong gawin. Sa maraming mga kaso, upang makamit ang isang sapat na antas ng seguridad ng code, hindi kinakailangan na italaga ang buong klase bilang final- ito ay lubos na posible upang mapanatili ang pagpapalawak ng klase sa pamamagitan ng pagmamarka finallamang ng "kritikal" na mga elemento ng istruktura nito na may modifier. Sa kasong ito, iiwan mong buo ang mga pangunahing pag-andar ng klase at kasabay nito ay pahihintulutan ang mana nito kasama ang pagdaragdag ng mga bagong miyembro, ngunit nang hindi muling tinukoy ang mga "luma". Siyempre, ang mga patlang na na-access ng code ng mga pamamaraan finalay dapat na italaga bilang finalalinman sa private, dahil kung hindi, ang anumang nagmula na klase ay magagawang baguhin ang kanilang mga nilalaman, na nakakaapekto sa pag-uugali ng mga kaukulang pamamaraan. Ang isa pang epekto ng paggamit ng modifier finalay nauugnay sa pagpapasimple ng problema sa pag-optimize ng code na nalutas ng compiler. Ito ang nangyayari kapag tinawag ang isang pamamaraan na hindi minarkahan bilangfinal, tinutukoy ng runtime system ang aktwal na klase ng object, iniuugnay ang tawag sa pinakaangkop na code mula sa pangkat ng mga overloaded na pamamaraan, at inililipat ang kontrol sa code na iyon. Ngunit kung, halimbawa, ang pamamaraan getNamesa halimbawa ng klase Attrna tinalakay kanina ay itinalaga bilang final, ang pagpapatakbo ng pagtawag dito ay maaaring kapansin-pansing pinasimple. Sa pinakamaliit na kaso, tulad ng tungkol sa getName, maaaring palitan lang ng compiler ang method call gamit ang body code nito. Ang mekanismong ito ay tinatawag na code inlining. Kapag ginagamit ang inline na bersyon ng pamamaraan, getNameang sumusunod na dalawang expression ay eksaktong pareho:
system.out.println("id = " + rose.name);
system.out.println("id = " + rose.getName());
Kahit na ang mga expression sa itaas ay katumbas, ang pangalawa ay may kalamangan pa rin, dahil getNamepinapayagan ka ng pamamaraan na bigyan ang field ng pangalan ng isang read-only na pag-aari, at ang code ng klase na magkaroon ng isang tiyak na antas ng abstraction, na nagbibigay-daan sa iyo na mas malayang baguhin ang pagpapatupad ng klase. Ang parehong optimization scheme ay maaaring ilapat ng compiler sa privateat mga pamamaraan statiс, dahil hindi rin nila pinapayagan ang pag-override. Ang paggamit ng modifier finalsa mga deklarasyon ng klase ay gumagawa din ng ilang uri ng checking operation na mas mahusay. Sa kasong ito, maraming mga naturang operasyon ang maaaring maisagawa na sa yugto ng compilation at samakatuwid ang mga potensyal na error ay napansin nang mas maaga. Kung ang compiler ay nakatagpo ng isang reference sa isang klase sa source text final, maaari itong maging "sigurado" na ang kaukulang bagay ay nasa uri na tinukoy. Ang compiler ay maaaring agad na matukoy ang lugar na inookupahan ng isang klase sa pangkalahatang hierarchy ng klase at suriin kung ito ay ginamit nang tama o hindi. Kung ang modifier finalay hindi inilapat, ang kaukulang mga pagsusuri ay isinasagawa lamang sa yugto ng pagpapatupad ng programa. Pagsasanay 3.4. Maipapayo bang isama ang panghuling modifier sa mga deklarasyon ng pamamaraan (at kung gayon, alin) ng mga klase ng sasakyan at pampasaherong sasakyan ? Link sa orihinal na pinagmulan: http://src-code.net/metody-i-klassy-final-java
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION