किसी क्लास का इंस्टेंस बनाने के लिए उसके कंस्ट्रक्टर को new ऑपरेटर की मदद से कॉल किया जाता है।
कंस्ट्रक्टर एक खास तरह का मेथड होता है, जिसका उद्देश्य नए बने इंस्टेंस को शुरुआती वैल्यू देना है।
कंस्ट्रक्टर दिखने में आम मेथड जैसे ही होते हैं, लेकिन इनका कोई रिटर्न टाइप नहीं होता और इनका नाम क्लास के नाम जैसा ही होता है।
class Library {
private int books;
public Library() {
this.books = 10;
}
}
// This will call the constructor
var library = new Library();
आम मेथड की तरह कंस्ट्रक्टर में भी पैरामीटर हो सकते हैं। कंस्ट्रक्टर के पैरामीटर आम तौर पर (private) फील्ड के रूप में संग्रहीत कर लिए जाते हैं, ताकि बाद में उनका उपयोग किया जा सके, या फिर किसी एक ही बार होने वाली गणना में इस्तेमाल होते हैं। कंस्ट्रक्टर को आर्गुमेंट ठीक उसी तरह पास किए जा सकते हैं जैसे आम मेथड को आर्गुमेंट पास किए जाते हैं।
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;
}
}