Egy osztály példányát úgy hozod létre, hogy meghívod a konstruktorát a new operátoron keresztül.
A konstruktor egy különleges metódus, amelynek a célja, hogy inicializálja az újonnan létrehozott példányt.
A konstruktorok úgy néznek ki, mint a hagyományos metódusok, de nincs visszatérési típusuk, és a nevük megegyezik az osztály nevével.
class Library {
private int books;
public Library() {
this.books = 10;
}
}
// This will call the constructor
var library = new Library();
A hagyományos metódusokhoz hasonlóan a konstruktoroknak is lehetnek paramétereik. A konstruktor paramétereit általában (privát) mezőkben tárolják, hogy később el lehessen érni őket, vagy egy egyszeri számításban használják fel őket. A konstruktoroknak ugyanúgy adhatsz át argumentumokat, mint a hagyományos metódusoknak.
class Building {
private int numberOfStories;
private int totalHeight;
public Building(int numberOfStories, double storyHeight) {
this.numberOfStories = numberOfStories;
this.totalHeight = numberOfStories * storyHeight;
}
}
// Call a constructor with two arguments
var largeBuilding = new Building(55, 6.2)
A konstruktor megadása nem kötelező. Ha nem adsz meg konstruktort, a fordító generál egy paraméter nélkülit:
class Elevator {
}
// This will call the (empty) generated constructor
var elevator = new Elevator();
Ha egy mezőhöz kezdőértéket rendelsz, a fordító olyan kódot állít elő, amelyben az értékadás valójában a konstruktoron belül történik. A következő osztálydeklarációk ezért (funkcionalitás szempontjából) egyenértékűek:
class UsingFieldInitialization {
private int players = 5;
}
class UsingConstructorInitialization {
private int players;
public UsingConstructorInitialization() {
players = 5;
}
}