কম্পিউটার টিউটোরিয়াল

জাভাতে ইন্টারফেসে কনস্ট্রাক্টর কেন নেই কিন্তু অ্যাবস্ট্রাক্ট ক্লাসে কনস্ট্রাক্টর থাকে?


একটি কনস্ট্রাক্টর হলো একটি নির্দিষ্ট ক্লাসের নন-স্ট্যাটিক মেম্বারগুলোকো একটি অবজেক্টের সাপেক্ষে ইনিশিয়ালাইজ করার জন্য।

ইন্টারফেসে কনস্ট্রাক্টর

  • জাভাতে একটি Interface-এ কনস্ট্রাক্টর নেই কারণ ইন্টারফেসের সকল ডেটা মেম্বার ডিফল্টরূপে public static final, অর্থাৎ কনস্ট্যান্ট (ডিক্লেয়ারেশনের সময় ভ্যালু অ্যাসাইন করা হয়)।
  • ইন্টারফেসে কোনো ডেটা মেম্বার নেই যেগুলো কনস্ট্রাক্টর দিয়ে ইনিশিয়ালাইজ করা যাবে।
  • একটি মেথড কল করতে হলে অবজেক্ট প্রয়োজন, যেহেতু ইন্টারফেসের মেথডগুলোর বডি নেই, ইন্টারফেসে মেথড কল করার প্রয়োজন নেই।
  • যেহেতু আমরা ইন্টারফেসের মেথড কল করতে পারি না, ইন্টারফেসের জন্য অবজেক্ট তৈরি করার প্রয়োজন নেই এবং তাই কনস্ট্রাক্টর থাকার প্রয়োজন নেই।

উদাহরণ ১

interface Addition {
    int add(int i, int j);
}
public class Test implements Addition {
    public int add(int i, int j) {
        int k = i+j;
        return k;
    }
    public static void main(String args[]) {
        Test t = new Test();
        System.out.println("k value is:" + t.add(10,20));
    }
}

আউটপুট

k value is:30

ক্লাসে কনস্ট্রাক্টর

  • একটি ক্লাস-এ কনস্ট্রাক্টর-র উদ্দেশ্য হলো ফিল্ডগুলো ইনিশিয়ালাইজ করা কিন্তু অবজেক্ট বিল্ড করা নয়।
  • যখন আমরা একটি অ্যাবস্ট্রাক্ট সুপারক্লাসের নতুন ইনস্ট্যান্স তৈরি করার চেষ্টা করি, কম্পাইলার এরর দেবে।
  • তবে, আমরা একটি অ্যাবস্ট্রাক্ট ক্লাস ইনহেরিট করে এর কনস্ট্রাক্টর ব্যবহার করতে পারি এর ভেরিয়েবল সেট করে।

উদাহরণ ২

abstract class Employee {
    public String empName;
    abstract double calcSalary();
    Employee(String name) {
        this.empName = name; // Constructor of abstract class
    }
}
class Manager extends Employee {
    Manager(String name) {
        super(name); // সাবক্লাসের কনস্ট্রাক্টরে নাম সেট করা
    }
    double calcSalary() {
        return 50000;
    }
}
public class Test {
    public static void main(String args[]) {
        Employee e = new Manager("Adithya");
        System.out.println("Manager Name is:" + e.empName);
        System.out.println("Salary is:" + e.calcSalary());
    }
}

আউটপুট

Manager Name is:Adithya
Salary is:50000.0
  1. জাভাতে কনস্ট্রাক্টরের নাম ক্লাসের নামের সাথে একই কেন

  2. জাভাতে ইন্টারফেস

  3. জাভাতে অ্যাবস্ট্রাক্ট ক্লাস

  4. জাভাতে কনস্ট্রাক্টর ফাইনাল হতে পারে না কেন