ডিফল্ট কনস্ট্রাক্টর
- একটি ডিফল্ট কনস্ট্রাক্টর হলো একটি ০ আর্গুমেন্ট কনস্ট্রাক্টর যেটিতে সুপার ক্লাস কনস্ট্রাক্টরের নো-আর্গুমেন্ট কল থাকে।
- নব निर्मিত অবজেক্টগুলোর ডিফল্ট ভ্যালু অ্যাসাইন করা হচ্ছে ডিফল্ট কনস্ট্রাক্টরের মূল দায়িত্ব।
- প্রোগ্রামার যদি ক্লাসে কোনো কনস্ট্রাক্টর না লিখে, তবে কম্পাইলার কোডে ডিফল্ট কনস্ট্রাক্টর লিখে দেয়।
- ডিফল্ট কনস্ট্রাক্টরের অ্যাক্সেস মডিফায়ার সবসময় ক্লাস মডিফায়ারের সমান কিন্তু এই নিয়ম শুধু "public" এবং "default" মডিফায়ারের জন্য প্রযোজ্য।
কবে কম্পাইলার ডিফল্ট কনস্ট্রাক্টর যোগ করে
- কম্পাইলার কোডে ডিফল্ট কনস্ট্রাক্টর যোগ করে শুধু তখন প্রোগ্রামার কোডে কোনো কনস্ট্রাক্টর না লিখে।
- যদি প্রোগ্রামার কোডে যেকোনো কনস্ট্রাক্টর লিখে, কম্পাইলার কোনো কনস্ট্রাক্টর যোগ করে না।
- প্রতিটি ডিফল্ট কনস্ট্রাক্টর হলো ০ আর্গুমেন্ট কনস্ট্রাক্টর কিন্তু প্রতিটি ০ আর্গুমেন্ট কনস্ট্রাক্টর ডিফল্ট কনস্ট্রাক্টর নয়।
প্যারামিটারাইজড কনস্ট্রাক্টর
- প্যারামিটারাইজড কনস্ট্রাক্টরগুলো হলো সেই কনস্ট্রাক্টরগুলো যেগুলোর নির্দিষ্ট সংখ্যক আর্গুমেন্ট পাস করতে হয়।
- প্যারামিটারাইজড কনস্ট্রাক্টরের উদ্দেশ্য হলো প্রোগ্রামার ইচ্ছামতো নির্দিষ্ট ভ্যালুগুলো ডিফারেন্ট অবজেক্টের ইনস্ট্যান্স ভেরিয়েবলগুলোর অ্যাসাইন করা।
- প্যারামিটারাইজড কনস্ট্রাক্টর প্রোগ্রামার দ্বারা এক্সপ্লিসিটলি লিখা হয়।
- ডিফল্ট কনস্ট্রাক্টরের অ্যাক্সেস মডিফায়ার সবসময় ক্লাস মডিফায়ারের সমান কিন্তু এই নিয়ম শুধু "public" এবং "default" মডিফায়ারের জন্য প্রযোজ্য।
উদাহরণ
public class Student {
int roll_no;
String stu_name;
Student(int i, String n) { // Parameterized constructor
roll_no = i;
stu_name = n;
}
void display() {
System.out.println(roll_no+" "+stu_name);
}
public static void main(String args[]) {
Student s1 = new Student(1,"Adithya");
Student s2 = new Student(2,"Jai");
s1.display();
s2.display();
}
}
উপরোক্ত প্রোগ্রামে, প্রোগ্রামার ২ প্যারামিটার সহ একটি প্যারামিটারাইজড কনস্ট্রাক্টর ডিফাইন করেছেন। এখন কম্পাইলার কোডে কোনো ডিফল্ট কনস্ট্রাক্টর যোগ করে না, এবং প্রোগ্রামারও কোনো ০ আর্গুমেন্ট কনস্ট্রাক্টর লিখেননি।
আউটপুট
1 Adithya 2 Jai