Objektikeskeisessä ohjelmoinnissa konstruktori on erityinen toiminto, jonka kutsut objektin luomiseksi. Rakentajilla on useita ainutlaatuisia ominaisuuksia, jotka antavat heille mahdollisuuden työskennellä.
Java-nimessä konstruktori nimetään luokan mukaan. Rakentaja on menetelmä, joka on määritelty luokassa, johon sitä sovelletaan. Java-rakentajat voivat käyttää ylikuormitusta vaihtoehtoisen käyttäytymisen tarjoamiseksi. Java-rakentajat voivat myös käyttää perintöä koodin uudelleenkäyttöön.
Miksi tarvitset rakentajia?
Rakentajat ovat keskeinen osa olio-ohjelmointi, ja Java ei ole poikkeus. Tämä esimerkki osoittaa, kuinka voit määrittää Circle-perusluokan yhdellä dataominaisuudella ja yhdellä menetelmällä:
julkisen luokan piiri {
julkinen kaksinkertainen säde;
public double area () {paluu 3.14159 * säde * säde; }
}
Voit sitten luoda tämän luokan esiintymän ja olla vuorovaikutuksessa sen kanssa:
Ympyrä c = uusi ympyrä ();
c.säde = 2;
System.out.println (c. Alue ()); // 12.56636
Mutta tämä on vähemmän kätevää ja kestävää kuin se voisi olla. On hyvä kohdennettua käytäntöä kapseloida tietoja suojaamalla niitä luvattomalta käytöltä:
julkisen luokan piiri {
yksityinen kaksinkertainen säde;
public double area () {paluu 3.14159 * säde * säde; }
public void setRadius (kaksinkertainen r) {säde = r; }
}
Nyt soittokoodi voi käyttää setRadius menetelmän eikä sinun tarvitse huolehtia sen toteutuksen yksityiskohdista:
Ympyrä c = uusi ympyrä ();
c.setRadius (2);
Rakentajat tarjoavat vieläkin paremman tavan toimittaa tietoja objektille, kun luot sen. Niitä käytetään hyvin usein ominaisuuksien, kuten säde tässä.
Esimerkkejä yksinkertaisista rakentajista
Perusrakentaja on yksi ilman argumentteja, joka ei tee mitään:
julkisen luokan piiri {
julkinen piiri () {}
}
Katso myös: Opi luomaan luokkia Java: ssa
Jos et määritä rakentajaa, Java tarjoaa oletusarvon, joka käyttäytyy samalla tavalla.
Huomaa muutama asia:
- Rakentajan nimi vastaa luokan nimeä.
- Tämä rakentaja käyttää julkinen pääsymuuttuja, joten mikä tahansa muu koodi voi soittaa siihen.
- Rakentaja ei sisällä palautustyyppiä. Toisin kuin muut menetelmät, rakentajat eivät voi palauttaa arvoa.
Rakentajat suorittavat tyypillisesti jonkinlaisen alustuksen. Huomaa, että yllä oleva koodi ei alusta säteen arvoa. Tässä tapauksessa kieli asettaa sen automaattisesti nollaksi. Tämä luokka odottaa käyttäjän käyttävän setRadius (). Jos haluat käyttää hyödyllisempää oletusarvoa kuin 0, voit määrittää sen konstruktorissa:
julkisen luokan piiri {
julkinen ympyrä () {säde = 1; }
}
Tällä luokalla luotuilla piireillä on ainakin nyt todellinen alue! Soittaja voi silti käyttää setRadius () antaa muun säteen kuin 1. Mutta rakentaja voi olla vielä ystävällisempi:
julkisen luokan piiri {
julkinen ympyrä (kaksinkertainen r) {säde = r; }
}
Nyt voit luoda piirejä tietyllä säteellä syntymästä alkaen:
Ympyrä c = uusi ympyrä (2);
System.out.println (c. Alue ()); // 12.56636
Tämä on hyvin yleinen käyttö rakentajille. Käytät niitä usein muuttujien alustamiseksi parametriarvoiksi.
Rakentajan ylikuormitus
Voit määrittää useamman kuin yhden rakentajan luokan määritelmään:
julkinen ympyrä () {säde = 1; }
julkinen ympyrä (kaksinkertainen r) {säde = r; }
Tämä antaa kutsukoodille mahdollisuuden valita, miten objektit rakennetaan:
Ympyrä c1 = uusi ympyrä (2);
Ympyrä c2 = uusi Ympyrä ();
System.out.println (c1.area () + "," + c2.area ()); // 12.56636, 3.14159
Hieman monimutkaisemman ympyrän avulla voit tutkia mielenkiintoisempia rakentajia. Tämä versio tallentaa sijaintinsa:
julkisen luokan piiri {
julkinen kaksinkertainen x, y, säde;
julkinen ympyrä () {säde = r; }
julkinen ympyrä (kaksinkertainen r) {säde = r; }
julkinen ympyrä (kaksinkertainen x, kaksinkertainen y, kaksinkertainen r) {
tämä.x = x; tämä.y = y; säde = r;
}
public double area () {paluu 3.14159 * säde * säde; }
}
Voit nyt luoda ympyrän ilman argumentteja, yhtä sädettä tai x- ja y-koordinaatteja säteen viereen. Tämä on samanlainen ylikuormitus, jota Java tukee millä tahansa menetelmällä.
Rakentajan ketju
Entä luoda yksi piiri toisen perusteella? Tämä antaisi meille mahdollisuuden kopioida piirejä helposti. Noudata seuraavaa kohtaa:
julkinen ympyrä (ympyrä c) {
tämä x = cx;
tämä.y = c.y;
tämä. säde = c. säde;
}
Tämä toimii, mutta se toistaa koodin tarpeettomasti. Koska Circle-luokassa on jo konstruktori, joka käsittelee yksittäisiä ominaisuuksia, voit soittaa sille sen sijaan käyttämällä Tämä avainsana:
julkinen ympyrä (ympyrä c) {
tämä (cx, cy, c. säde);
}
Tämä on eräänlainen konstruktoriketju, joka kutsuu yhtä konstruktoria toisesta. Se käyttää vähemmän koodia ja auttaa keskittämään toiminnan pikemminkin kuin kopioimalla sitä.
Soitetaan vanhemman rakentajalle
Konstruktorin ketjutuksen toinen muoto tapahtuu, kun konstruktori kutsuu vanhemman luokan rakentajan. Tämä voi olla joko suoraa tai epäsuoraa. Soita vanhemmalle konstruktorille nimenomaisesti käyttämällä super avainsana:
super (x, y);
Kuvittele, että Shape-luokka toimii piirin vanhempana:
julkisen luokan muoto {
kaksinkertainen x, y;
julkinen muoto (kaksinkertainen _x, kaksinkertainen _y) {x = _x; y = _y; }
}
Se hoitaa kaikkien muotojen yhteisen paikannuksen, koska tämä on toiminnallisuus, jota ne kaikki jakavat. Nyt Circle-luokka voi siirtää sijainnin käsittelyn vanhemmalleen:
julkisen luokan ympyrä ojentaa muodon {
kaksinkertainen säde;
julkinen ympyrä (kaksinkertainen r) {super (0, 0); säde = r; }
julkinen ympyrä (kaksinkertainen x, kaksinkertainen y, kaksinkertainen r) {
super (x, y);
säde = r;
}
}
Superclass-rakentaminen on erittäin tärkeä osa perintö Java. Kieli noudattaa sitä oletusarvoisesti, jos et soita nimenomaisesti super rakentajissasi.
Rakentajien pääsymodifikaattorit
Rakentajat voivat sisällyttää allekirjoitukseensa pääsymuuttujan. Kuten muutkin menetelmät, tämä määrittää, minkä tyyppiset soittajat voivat käyttää rakentajaa:
julkisen luokan testi {
yksityinen staattinen testi uniqueInstance = uusi testi ();
yksityinen testi () {}
julkinen staattinen testi getInstance () {
palaa ainutlaatuinen
}
}
Tämä on monimutkaisempi esimerkki, joten ymmärrä se:
- Luokka ei ole abstrakti, joten siitä on mahdollista tehdä heti.
- Rakentaja on yksityinen, joten vain tämä luokka itse voi luoda uuden esiintymän.
- Staattisen ominaisuuden ja menetelmän avulla luokka paljastaa yhden ainoan ainutlaatuisen esiintymän soittajille.
Luo objekteja Java-rakentajien avulla
Rakentajat ovat elintärkeitä olio-ohjelmoinnille. Niiden avulla voit luoda esineitä, mikä on välttämätöntä!
Javalassa rakentajat näyttävät muilta menetelmiltä ja toimivat samalla tavalla. Muista oletusrakentajia, ylikuormitusta ja rakentajien ketjutusta koskevat erityissäännöt. Jos rakentajat ovat sinulle uusia, kannattaa ehkä lukea muita Java-ydinkäsitteitä, jotka sinun tulisi oppia aloittaessasi.
Kirjoitatpa sitten käyttöliittymää, kehität palvelinpuolen ohjelmistoa tai mobiilisovellusta Androidilla, Java-oppiminen palvelee sinua hyvin. Tässä on joitain Java-peruskäsitteitä, joiden avulla pääset alkuun.
Lue seuraava
- Ohjelmointi
- Java
- Koodausvinkit

Bobby on tekniikan harrastaja, joka työskenteli ohjelmistokehittäjänä kahden vuosikymmenen ajan. Hän on intohimoinen pelaamiseen, työskentelee Review Player -lehdessä Switch Player -lehdessä ja on uppoutunut verkkojulkaisun ja verkkokehityksen kaikkiin osa-alueisiin.
Tilaa uutiskirjeemme
Liity uutiskirjeeseemme, jossa on teknisiä vinkkejä, arvosteluja, ilmaisia e-kirjoja ja erikoistarjouksia!
Vielä yksi askel !!!
Vahvista sähköpostiosoitteesi juuri lähettämässäsi sähköpostiviestissä.