Jelenlegi hely

7.1.3. Objektum inicializálása

A Point osztály kódja:

public class Point {
    public int x = 0;
    public int y = 0;
    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

Ez az osztály egy konstruktort tartalmaz. A konstruktornak ugyanaz a neve, mint az osztálynak, és nincs visszatérési értéke. A Point osztály konstruktora két egész típusú paramétert kap: (int x, int y). A következő utasítás a 23 és 94 értékeket adja át paraméterként:

Point originOne = new Point(23, 94);

Ennek a hatását mutatja a következő ábra:

originOne objektum

A Rectangle osztály négy konstruktort tartalmaz:

public class Rectangle {
    public int width = 0;
    public int height = 0;
    public Point origin;
    public Rectangle() {
        origin = new Point(0, 0);
    }
    public Rectangle(Point p) {
        origin = p;
    }
    public Rectangle(int w, int h) {
        this(new Point(0, 0), w, h);
    }
    public Rectangle(Point p, int w, int h) {
        origin = p;
        width = w;
        height = h;
    }
    public void move(int x, int y) {
        origin.x = x;
        origin.y = y;
    }
    public int area() {
        return width * height;
    }
}

Akármelyik konstruktorral kezdeti értéket adhatunk a téglalapnak, különböző szempontok szerint: a koordinátái (origin); szélessége és magassága; mind a három; vagy egyik sem.

Ha egy osztálynak több konstruktora van, mindnek ugyanaz a neve, de különböző számú vagy különböző típusú paraméterekkel rendelkezik. A Java platform a konstruktort a paraméterek száma és típusa alapján különbözteti meg. A következő kódnál a Rectangle osztálynak azt a konstruktorát kell meghívnia, ami paraméterként egy Point objektumot és két egészet vár:

Rectangle rectOne = new Rectangle(originOne, 100, 200);

Ez a hívás inicializálja a téglalap origin változóját az originOne-nal (originOne értékét veszi fel az origin változó), ami egy Point objektumra hivatkozik, a width értéke 100-zal lesz egyenlő, a height értékét 200-zal. Most már két hivatkozás van ugyanarra a Point objektumra; egy objektumra több hivatkozás is lehet:

rectangle objektum

A következő sor két egész típusú paraméterrel rendelkező konstruktort hívja meg, amik a width és height értékei. Ha megnézzük a konstruktor kódját, látjuk, hogy létrehoz egy új Point objektumot, aminek az x és y értéke is nulla lesz:

Rectangle rectTwo = new Rectangle(50, 100);

Ez a konstruktor nem vár paramétereket, paraméter nélküli konstruktor:

Rectangle rect = new Rectangle();

Ha egy osztály nem deklarál egy konstruktort se, akkor a Java platform automatikusan szolgáltat egy paraméter nélküli (alapértelmezett, default) konstruktort, ami „nem csinál semmit”. Így minden osztálynak van legalább egy konstruktora.