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
instagram viewer

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:

  1. A konstruktor neve megegyezik az osztály nevével.
  2. Ez a konstruktor a nyilvános hozzáférés módosító, így bármely más kód meghívhatja.
  3. 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.

Email
10 alapvető Java koncepció, amelyet meg kell tanulnia 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

Kapcsolódó témák
  • Programozás
  • Jáva
  • Kódolási tippek
A szerzőről
Bobby Jack (51 cikk megjelent)

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.

Tovább Bobby Jack-től

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.

.