Az objektumorientált programozásban a konstruktor egy speciális funkció, amelyet egy objektum létrehozásához hív meg. A kivitelezők számos egyedi tulajdonsággal rendelkeznek, amelyek lehetővé teszik számukra a munkát.
A Java-ban egy konstruktort nevezel el az osztálya után. A konstruktor egy olyan módszer, amelyet abban az osztályban definiálnak, amelyre vonatkozik. A Java konstruktorok túlterhelést alkalmazhatnak alternatív viselkedés biztosítására. A Java kivitelezői az öröklést is felhasználhatják a kód újrafelhasználására.
Miért van szükség építőiparra?
A kivitelezők a támasza objektumorientált programozás, és a Java sem kivétel. Ez a példa bemutatja, hogyan definiálhat egy alap körosztályt egy adat tulajdonsággal és egy módszerrel:
nyilvános osztály Kör {
nyilvános kettős sugár;
nyilvános kettős terület () {visszatér 3.14159 * sugár * sugár; }
}
Ezután létrehozhat egy példányt erről az osztályról, és kölcsönhatásba léphet vele:
C kör = új kör ();
c.radius = 2;
System.out.println (c. Terület ()); // 12.56636
De ez kevésbé kényelmes és robusztus, mint lehet. Jó objektumorientált gyakorlat az adatok beillesztése, illetéktelen hozzáférés elleni védelem:
nyilvános osztály Kör {
magán kettős sugár;
nyilvános kettős terület () {visszatér 3.14159 * sugár * sugár; }
public void setRadius (dupla r) {sugár = r; }
}
Most a hívó kód használhatja a setRadius módszer, és nem kell aggódnia a megvalósítás részletei miatt:
C kör = új kör ();
c.setRadius (2);
A kivitelezők még jobb módot kínálnak az adatok eljuttatására egy objektumra, amikor létrehozza. Nagyon gyakran használják a tulajdonságok inicializálásához, például a sugár itt.
Példák egyszerű kivitelezőkre
A legalapvetőbb konstruktor argumentum nélküli, és nem csinál semmit:
nyilvános osztály Kör {
nyilvános kör () {}
}
Lásd még: Ismerje meg, hogyan lehet osztályokat létrehozni Java-ban
Ha nem definiál konstruktort, a Java megad egy alapértelmezettet, amely ugyanúgy viselkedik.
Jegyezzen fel néhány dolgot:
- A konstruktor neve megegyezik az osztály nevével.
- Ez a konstruktor a nyilvános hozzáférés módosító, így bármely más kód meghívhatja.
- A kivitelező nem tartalmaz visszatérési típust. Más módszerekkel ellentétben a konstruktorok nem adhatnak vissza értéket.
A kivitelezők általában valamilyen inicializálást hajtanak végre. Vegye figyelembe, hogy a fenti kód nem inicializálja a sugár értékét. Ebben az esetben a nyelv automatikusan nullára állítja. Ez az osztály a felhasználótól elvárja setRadius (). 0-nál hasznosabb alapértelmezés használatához a konstruktoron belül rendelheti hozzá:
nyilvános osztály Kör {
nyilvános kör () {sugár = 1; }
}
Az ezzel az osztállyal létrehozott köröknek legalább most lesz tényleges területe! A hívó továbbra is használhatja setRadius () 1-től eltérő sugár megadására. De a kivitelező még barátságosabb lehet:
nyilvános osztály Kör {
nyilvános kör (dupla r) {sugár = r; }
}
Mostantól születésétől fogva meghatározott körű köröket hozhat létre:
C kör = új kör (2);
System.out.println (c. Terület ()); // 12.56636
Ez nagyon gyakori alkalmazás a kivitelezők számára. Gyakran használja őket a változók paraméterértékek inicializálásához.
A kivitelező túlterhelése
Több konstruktort is megadhat egy osztálydefinícióban:
nyilvános kör () {sugár = 1; }
nyilvános kör (dupla r) {sugár = r; }
Ez lehetőséget ad a hívó kódnak az objektumok felépítésének módjára:
C1 kör = új kör (2);
C2 kör = új kör ();
System.out.println (c1.area () + "," + c2.area ()); // 12.56636, 3.14159
Egy kissé összetettebb körrel érdekes építőket fedezhet fel. Ez a verzió tárolja helyzetét:
nyilvános osztály Kör {
nyilvános kettős x, y, sugár;
nyilvános kör () {sugár = r; }
nyilvános kör (dupla r) {sugár = r; }
nyilvános kör (dupla x, dupla y, dupla r) {
ez.x = x; ez.y = y; sugár = r;
}
nyilvános kettős terület () {visszatér 3.14159 * sugár * sugár; }
}
Most létrehozhat egy argumentum nélküli kört, egyetlen sugarat vagy x és y koordinátákat a sugár mellett. Ez ugyanaz a fajta túlterhelés, amelyet a Java bármilyen módszerhez támogat.
Konstruktor láncolás
Mit szólnál egy kör létrehozásához egy másik alapján? Ez lehetővé tenné számunkra a Circles egyszerű másolását. Vegye figyelembe a következő blokkot:
nyilvános kör (c kör) {
ez.x = c.x;
ez.y = c.y;
this.radius = c.radius;
}
Ez működni fog, de szükségtelenül megismétel néhány kódot. Mivel a Circle osztálynak már van egy konstruktora, amely kezeli az egyes tulajdonságokat, ezt a (z) használatával hívhatja meg ez kulcsszó:
nyilvános kör (c kör) {
ez (cx, cy, c.radius);
}
Ez a konstruktor láncolásának egyik formája, amely egyik konstruktort meghívja a másikból. Kevesebb kódot használ, és nem a sokszorosítást, hanem a műveletek központosítását segíti elő.
A szülőépítő felhívása
A konstruktor láncolásának másik formája akkor fordul elő, amikor egy konstruktor felhívja a szülőosztályának konstruktorát. Ez lehet explicit vagy implicit. A szülő konstruktor kifejezett hívásához használja a szuper kulcsszó:
szuper (x, y);
Képzeljen el egy Alakosztályt, amely a Kör szülőjeként jár el:
nyilvános osztály alakja {
kettős x, y;
public Shape (dupla _x, dupla _y) {x = _x; y = _y; }
}
Kezeli az összes alakzat közös pozicionálását, mivel ez a funkcionalitás mindannyian megosztottak. Most a Circle osztály átruházhatja a helyzetkezelést a szülőjére:
nyilvános osztály Kör kiterjeszti Alakot {
kettős sugár;
nyilvános kör (dupla r) {szuper (0, 0); sugár = r; }
nyilvános kör (dupla x, dupla y, dupla r) {
szuper (x, y);
sugár = r;
}
}
A szuperklasszis felépítés nagyon fontos szempont a öröklés Java-ban. A nyelv alapértelmezés szerint érvényesíti, ha nem kifejezetten hív szuper a kivitelezőidben.
Hozzáférés-módosítók a kivitelezőkön
A kivitelezők hozzáférés-módosítót írhatnak aláírásukba. Más módszerekhez hasonlóan ez határozza meg, hogy a hívó típusok milyen típusú hozzáféréssel férhetnek hozzá a konstruktorhoz:
nyilvános osztály teszt {
privát statikus teszt uniqueInstance = új teszt ();
privát teszt () {}
nyilvános statikus teszt getInstance () {
return egyediInstance;
}
}
Ez egy bonyolultabb példa, ezért ügyeljen a megértésére:
- Az osztály nem elvont, ezért lehet belőle példamutató.
- A konstruktor privát, így csak ez az osztály hozhat létre új példányt.
- Statikus tulajdonságon és módszeren keresztül az osztály egyetlen, egyedi példányt tár fel a hívók előtt.
Objektumok létrehozásához használja a Java konstruktorokat
A kivitelezők létfontosságúak az objektum-orientált programozás szempontjából. Lehetővé teszik tárgyak létrehozását, ami elengedhetetlen!
A Java-ban a konstruktorok más módszerekhez hasonlítanak, és ugyanúgy működnek. Ne feledje az alapértelmezett kivitelezőkre, a túlterhelésre és a láncolókra vonatkozó speciális szabályokat. Ha a konstruktorok újdonságok számodra, érdemes elolvasni a többi Java alapkoncepciót, amelyeket el kell tanulnod az induláskor.
Akár grafikus felhasználói felületet írsz, szerveroldali szoftvert fejlesztesz, akár mobilalkalmazást használsz az Android segítségével, a Java megtanulása jól fog szolgálni. Az alábbiakban felsorolunk néhány alapvető Java-fogalmat, amelyek elősegítik az indulást.
Olvassa el a következőt
- Programozás
- Jáva
- Kódolási tippek
Bobby technológiai rajongó, aki szoftverfejlesztőként dolgozott a két évtized alatt. Szenvedélyesen játszik a játékokkal, a Switch Player Magazine Véleményszerkesztőjeként dolgozik, és elmerül az online kiadványok és webfejlesztés minden aspektusában.
Iratkozzon fel hírlevelünkre
Csatlakozzon hírlevelünkhöz, amely műszaki tippeket, véleményeket, ingyenes e-könyveket és exkluzív ajánlatokat tartalmaz!
Még egy lépés…!
Kérjük, erősítse meg e-mail címét az imént elküldött e-mailben.