ساختن یک نمونه از یک «کلاس» با فراخوانی سازنده آن از طریق عملگر new انجام میشود.
سازنده نوع خاصی از متد است که هدفش مقداردهی اولیه به نمونهای تازهساختهشده است.
سازندهها شبیه متدهای معمولی هستند، اما نوع بازگشتی ندارند و اسمشان با اسم کلاس یکسان است.
class Library {
private int books;
public Library() {
this.books = 10;
}
}
// This will call the constructor
var library = new Library();
سازندهها هم مانند متدهای معمولی میتوانند پارامتر داشته باشند. پارامترهای سازنده معمولاً بهصورت فیلدهای (خصوصی) ذخیره میشوند تا بعداً به آنها دسترسی پیدا کنیم، یا در یک محاسبهی یکباره به کار میروند. میتوان به سازندهها آرگومان پاس داد، درست مثل پاس دادن آرگومان به متدهای معمولی.
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)
تعریف کردن سازنده اختیاری است. اگر سازندهای تعریف نشود، کامپایلر یک سازندهی بدون پارامتر تولید میکند:
class Elevator {
}
// This will call the (empty) generated constructor
var elevator = new Elevator();
اگر برای فیلدها مقدار اولیهای تعیین شده باشد، کامپایلر کدی را خروجی میدهد که در آن انتساب در واقع داخل سازنده انجام میشود. بنابراین اعلانهای کلاس زیر از نظر عملکردی معادلاند:
class UsingFieldInitialization {
private int players = 5;
}
class UsingConstructorInitialization {
private int players;
public UsingConstructorInitialization() {
players = 5;
}
}