A Java konstruktor létrehoz egy új példányt egy már definiált objektumról. Ez a cikk azt tárgyalja, hogyan lehet Java konstruktor módszereket felhasználni egy Személy objektum létrehozásához.
Jegyzet: Ehhez a példához két fájlt kell létrehoznia ugyanabban a mappában: Person.java meghatározza a Személyosztályt, és PersonExample.java tartalmazza a fő módszer amely Személy tárgyakat hoz létre.
A kivitelező módszer
Kezdjük egy Személyosztály létrehozásával, amely négy magánmezővel rendelkezik: keresztnév, utónév, cím és felhasználónév. Ezek a mezők privát változók, és értékeik együttesen képezik az objektum állapotát. Hozzáadtuk a legegyszerűbb konstruktor módszereket is:
nyilvános osztályú személy {
privát karakterlánc keresztnév;
privát karakterlánc vezetéknév;
privát karakterlánc cím;
privát karakterlánc;
// A kivitelező módszer
nyilvános személy ()
{
}
}
A konstruktor módszer hasonlít bármely más nyilvános módszerhez, azzal a különbséggel, hogy ugyanazzal a névvel rendelkezik, mint az osztály, és nem adhat értéket. Lehet, hogy nincs, egy vagy több paramétere.
Jelenleg a konstruktor módszerünk egyáltalán nem tesz semmit, és jó ideje megfontolni, hogy ez mit jelent a Személy objektum kezdeti állapotában. Ha a dolgokat úgy hagyjuk, ahogy vannak, vagy nem vettünk bele konstruktor módszert a Személy osztályba (in Jáva osztályt meghatározhat egy nélkül), akkor a mezőknek nem lennének értékük - és minden bizonnyal azt szeretnénk, ha személyünknek legyen neve és címe, valamint egyéb jellemzői. Ha úgy gondolja, hogy van esély arra, hogy az objektumot nem használják úgy, ahogy várták, és a mezők nem lehetnek inicializálva az objektum létrehozásakor, mindig definiálja őket alapértelmezett értékkel:
nyilvános osztályú személy {
private String firstName = "";
private String lastName = "";
privát karakterlánc címe = "";
privát karakterlánc felhasználónév = "";
// A kivitelező módszer
nyilvános személy ()
{
}
}
Általában annak biztosítása érdekében, hogy egy konstruktor módszer hasznos legyen, azt úgy tervezzük, hogy a paraméterekre számítson. A paramétereken átadott értékek felhasználhatók a privát mezők értékének beállítására:
nyilvános osztályú személy {
privát karakterlánc keresztnév;
privát karakterlánc vezetéknév;
privát karakterlánc cím;
privát karakterlánc;
// A kivitelező módszer
nyilvános személy (karakterlánc első keresztnév, karakterlánc személyLastName, karakterlánc személycím, karakterlánc személy felhasználónév)
{
firstName = personFirstName;
lastName = personLastName;
address = personAddress;
felhasználónév = personUsername;
}
// Az objektum állapotának a képernyőn történő megjelenítésére szolgáló módszer
public void displayPersonDetails ()
{
System.out.println ("Név:" + keresztnév + "" + utónév);
System.out.println ("Cím:" + cím);
System.out.println ("Felhasználónév:" + felhasználónév);
}
}
Kivitelező módszerünk szerint most négy vonal értékeinek átadása várható rá. Ezzel az objektum kezdeti állapotát állítják be. Felvetettünk egy új módszert, az úgynevezett displayPersonDetails () hogy láthassuk az objektum állapotát annak létrehozása után.
A kivitelező módszer meghívása
Az objektum többi módszerével ellentétben a kivitelező módszert az "új" kulcsszóval kell meghívni:
nyilvános osztályú PersonExample {
nyilvános statikus void main (karakterlánc [] args) {
Person dave = új személy ("Dave", "Davidson", "12 Main St.", "DDavidson");
dave.displayPersonDetails ();
}
}
Itt van, amit tettünk:
- A Személy objektum új példányának létrehozásához először definiálunk egy Személy típusú változót, amely az objektumot fogja tartani. Ebben a példában ezt neveztük dave.
- Az egyenlőségjel másik oldalán hívjuk a Személy osztály konstruktor módszerét, és négy karakterláncértéket adunk át. A konstruktor módszerünk figyelembe veszi a négy értéket, és a Személy objektum kezdeti állapotát a következőre állítja: firstName = "Dave", lastName = "Davidson", address = "12 Main St", username = "DDavidson".
Figyelje meg, hogyan váltottuk a Java főosztályt a Személy objektum meghívására. Ha tárgyakkal dolgozik, a programok átfogóak több .java fájl. Ügyeljen arra, hogy ugyanabban a mappában mentse őket. A program fordításához és futtatásához egyszerűen fordítsa le és futtassa a Java-t fő osztály fájl (azaz PersonExample.java). A Java fordító elég okos ahhoz, hogy felismerje, hogy a Person.java fájlt is, mert láthatja, hogy a PersonExample osztályban használta.
A paraméterek elnevezése
A Java fordító összetéveszthető, ha a konstruktor módszer paramétereinek neve ugyanaz, mint a privát mezőknek. Ebben a példában láthatja, hogy megkülönböztettük őket a paraméterek „személy” előtaggal történő elválasztásával. Érdemes megemlíteni, hogy van egy másik út. Ehelyett a "ez" kulcsszót használhatjuk:
// A kivitelező módszer
nyilvános személy (karakterlánc keresztnév, karakterlánc karakterlánc, karakterlánc cím, karakterlánc felhasználónév)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = cím;
this.username = felhasználónév;
}
Az "ez" kulcsszó azt mondja a Java fordítónak, hogy az értékhez hozzárendelt változót az osztály határozza meg, nem pedig a paraméter. Ez a programozási stílus kérdése, de ez a módszer segít meghatározni a konstruktor paramétereit anélkül, hogy több nevet kellene használni.
Több mint egy konstruktor módszer
Az objektumosztályok tervezésekor nem korlátozódik csak egy konstruktor módszer használatára. Dönthet úgy, hogy az objektumok inicializálásának néhány módja van. Az egynél több konstruktor módszer használatának korlátozása az, hogy a paramétereknek különbözniük kell.
Képzelje el, hogy amikor a Személy objektumot létrehozunk, lehet, hogy nem ismeri a felhasználónevet. Adjunk hozzá egy új konstruktor módszert, amely a Személy objektum állapotát csak az elsőnév, utónév és cím felhasználásával állítja be:
nyilvános osztályú személy {
privát karakterlánc keresztnév;
privát karakterlánc vezetéknév;
privát karakterlánc cím;
privát karakterlánc;
// A kivitelező módszer
nyilvános személy (karakterlánc keresztnév, karakterlánc karakterlánc, karakterlánc cím, karakterlánc felhasználónév)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = cím;
this.username = felhasználónév;
}
// Az új konstruktor módszer
nyilvános személy (karakterlánc, keresztnév, karakterlánc címe)
{
this.firstName = firstName;
this.lastName = lastName;
this.address = cím;
this.username = "";
}
// Az objektum állapotának a képernyőn történő megjelenítésére szolgáló módszer
public void displayPersonDetails ()
{
System.out.println ("Név:" + keresztnév + "" + utónév);
System.out.println ("Cím:" + cím);
System.out.println ("Felhasználónév:" + felhasználónév);
}
}
Vegye figyelembe, hogy a második konstruktor módszert "Személy" -nek is hívják, és szintén nem ad vissza értéket. Az egyetlen különbség az első konstruktor módszer és a paraméterek között - ezúttal csak várható három karakterlánc értékek: keresztnév, utónév és cím.
Most kétféle módon hozhatunk létre személyes tárgyakat:
nyilvános osztályú PersonExample {
nyilvános statikus void main (karakterlánc [] args) {
Person dave = új személy ("Dave", "Davidson", "12 Main St.", "DDavidson");
Személy Jim = új Személy ("Jim", "Davidson", "15 Kings Road");
dave.displayPersonDetails ();
jim.displayPersonDetails ();
}
}
Személy dave első név, utónév, cím és felhasználónévvel kerül létrehozásra. Személy Jim azonban nem kap felhasználónevet, azaz a felhasználónév üres karakterlánc lesz: felhasználónév = "".
Gyors visszatérés
A kivitelező módszereket csak akkor hívják meg, amikor egy objektum új példánya jön létre. Ők:
- A névvel azonosnak kell lennie, mint az osztálynak
- Ne adjon vissza értéket
- Nem lehet egyetlen, sem sok paraméter
- Többet is számozhat, feltéve, hogy az összes konstruktor módszer eltérő paraméterkészlettel rendelkezik
- Lehet paraméternevek ugyanaz, mint a privát mezők, mindaddig, amíg az "ez" kulcsszó kerül felhasználásra
- Az "új" kulcsszó használatával hívják őket