একটি ক্লাস-এর একটি ইনস্ট্যান্স তৈরি করা হয় তার কনস্ট্রাক্টর-কে 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;
}
}