Ero lopullisen ja staattisen välillä

Matematiikassa ja luonnontieteessä vakio on termi, joka ilmaisee tietyn arvon, kuten 'π', joka on käytännöllinen nimi numerolle 3.14159. Java: lla on sellaiset vakionsa. Nämä ovat muuttujia, jotka kohdan (a) yhteydessä eivät kuulu mihinkään objektiin ja ala (b) eivät muuta arvoaan kun ne on asetettu. Staattinen sana muuttujan ilmoituksessa osoittaa, että muuttuja ei kuulu mihinkään objektiin. On samanlainen avainsana, joka sanoo, että muuttujan arvo asetetaan vain kerran eikä muutu. Tämä on avainsana lopullinen. Tämä avainsana ei ole rajoitettu staattisiin muuttujiin, vaan sitä voidaan käyttää ilmentymän muuttujien, paikallisten muuttujien ja jopa muuttujien kanssa, jotka ovat parametrimenetelmiä. Julistamalla muuttujan lopulliseksi osoitat kaikille, että muuttujan olemassaolon aikana on sama arvo. Vielä tärkeämpää on, että kääntäjä havaitsee jokaisen yrityksen muuttaa niin julistetun muuttujan arvoa ja ilmoittaa siitä virheenä. Java-terminologian suhteen staattisena ja lopullisena ilmoitettua muuttujaa kutsutaan vakiona.

Mikä on lopullinen?

Lopullista muokkainta voidaan käyttää Java-ohjelmointikielen useissa paikoissa. Tässä käsittelemme sen yleisintä käyttöä. Lopullista modifikaattoria voidaan käyttää paikallisen muuttujan, funktioargumentin ja ei-staattisen tai staattisen jäsenmuuttujan ilmoittamiseen. Tässä yhteydessä muuttujan modifikaattori muuttuu vakiona. Käännöskielen kääntäjä tarkistaa, yrittääkö jokin koodi muuttaa arvoa, ja tällaiset yritykset merkitään virheeksi. Tässä on esimerkki.

lopullinen int-arvo = 17;

Staattisia jäsenmuuttujia tämän modifikaattorin kanssa käytetään globaaleina vakioina; Esimerkiksi java.lang.Math-muuttujassa PI on tarkka

julkinen staattinen lopullinen kaksinkertainen PI = 3,14159265358979323846;

Voimme soveltaa lopullista muunnosta toimintoilmoitukseen. Finaalilla merkittyä toimintoa ei voida enää ohittaa - se on sen lopullinen toteutus. Abstrakteja menetelmiä ei voida julistaa lopullisiksi - se, että ne ovat abstrakteja, tarkoittaa, että niitä ei toteuteta; se ei todellakaan voi olla heidän perimmäinen tila. Tässä on esimerkki.

julkinen lopullinen int tarkoitusLife ()

paluu 42;

Voimme soveltaa lopullista muunnosta luokan ilmoitukseen. Luokka, joka on merkitty finaalilla, ei voi enää periä - se on sen lopullinen toteutus. On selvää, että abstrakti luokka ei voi olla lopullinen samaan aikaan. Tässä on esimerkki

julkinen finaaliluokka suljettu

// ...

Yksi rajallisista luokan esimerkkeistä on java.lang.String-luokka - se on äärellinen, joten kukaan ei voisi periä sitä ja saada siten pääsyä sen jäsenmuuttujiin.

Mikä on staattinen?

Staattiset muuttujat eivät kuulu luokan tiettyyn esiintymään. Staattiset muuttujat kuuluvat itse luokkaan, ja muistissa on vain yksi sijainti riippumatta siitä, kuinka monta luokkaa muistissa luodaan. Ei-staattiset muuttujat kuuluvat luokanäytteisiin - jokaisella luokan esiintymällä on oma kopio sellaisista muuttujista. Staattiset muuttujat kuuluvat luokkaan - luokka muistissa pitää tällaisten muuttujien arvot; Siksi kaikissa näytteen luokissa on sama sisältö, joten voimme katsoa, ​​että staattiset muuttujat voidaan jakaa kaikkien luokkakokojen kesken. Päivittämällä arvomuuttuja, uusi arvo tulee automaattisesti näkyviin luokan kaikille esiintymisille. Staattista suodatinta voidaan käyttää mihin tahansa luokan sisällä laillisesti ilmoitettuun elementtiin. Jäsenmuuttujien tapauksessa seurauksena on, että tällaiset jäsenmuuttujat tallennetaan muistiin vain yhdessä paikassa. Mitä tapahtuu, jos se on menetelmä? Julistamalla menetelmä staattiseksi, viesti on sama: merkityksellinen menetelmä ei kuulu luokkoluokkiin, vaan itse luokkaan. Niinpä staattiset menetelmät eivät saa piilotettua viittausta objektiin, jonka päälle niitä kutsutaan; staattisissa vertailumenetelmissä tämä ei ole käytettävissä. Itse asiassa staattisten menetelmien käyttäminen objektin läpi on yhtä hämmentävää kuin staattisille jäsenmuuttujille pääsy viittaamalla tähän viitteeseen: molemmissa tapauksissa on parempi yksinkertaisesti kirjoittaa luokan nimi, piste ja kutsuvan menetelmän nimi..

Ero lopullisen ja staattisen välillä

  1. muuttuja

Staattinen tarkoittaa muuttujaa, joka on yhteinen kaikille kohteille, jotka hetkellisittävät tietyn luokan, kun taas lopullinen määrittelee vakion.

  1. Menetelmä

Staattinen on menetelmä, joka on sama jokaiselle objektille annetussa luokassa - sitä kutsutaan myös luokan jäseneksi esim. sellainen on päämenetelmä. Lopullista menetelmää ei voida käsitellä perinnöllisessä luokassa.

  1. luokka

Loppua ei voida laajentaa, ts. Se ei salli alaluokkia. Staattinen ei koske luokkaa.

  1. Arvo

Yksinkertaisesti sanottuna lopullinen merkitsi, että arvoa ei voida muuttaa (ohittaa). Staattinen arvo on asetettu oletusarvoon, mutta se voidaan alustaa uudelleen.

Lopullinen vs. staattinen: vertailukaavio

Yhteenveto lopullisesta ja staattisesta

  • Avaintyöstaattinen tarjoaa pääsyn myös silloin, kun mitään objektia (esiintymää) ei ole. Näkyvät luokat ilmoitetaan avainsanalla staattinen. Jos et halua, että joidenkin ohjelmassa tapahtuvien muutosten arvo muuttuu myöhemmin, tai jos haluat kääntäjän tarkistavan ja kieltävän, voit muuttaa lupauksen lopulliseksi. Alustamiseen on olemassa staattinen lohko. Alustamisen staattinen lohko julistetaan avainasemassa staattisiksi hakasulojen edessä. Tällainen lohko suoritetaan kerran, luokkien lukemisen aikana, ja se yleensä alustaa luokan staattiset jäsenet.