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

জাভাতে কনস্ট্রাক্টর কেন final হতে পারে না?

যখন একটি মেথডকে final করা হয়, তবে সেটি ওভাররাইড করা যায় না। অর্থাৎ চাইল্ড ক্লাস থেকে পেরেন্ট ক্লাসের ফাইনাল মেথডের ইমপ্লিমেন্টেশন পরিবর্তন করা যায় না। final মেথড बनाने এর উদ্দেশ্য হলো বাহ্যিক সংশোধন (child class modification) রোধ করা।

ইনহেরিটেন্স (ব ארצותদান) এর সময় চাইল্ড ক্লাস পেরেন্ট ক্লাসের সব মেম্বার ইনহেরিট করে কনস্ট্রাক্টর বাদে। অর্থাৎ জাভাতে কনস্ট্রাক্টর ইনহেরিট করা হয় না।

যেহেতু কনস্ট্রাক্টর ইনহেরিট হয় না, তাই সেটি ওভাররাইড করার সম्भাবনাই নেই। সুতরাং কনস্ট্রাক্টরের আগে final লিখার কোনো অর্থ নেই। এই কারণে জাভা কম্পাইলার কনস্ট্রাক্টরের আগে final মডিফায়ার দেওয়ার অনুমতি দেয় না।

উদাহরণ: ফাইনাল কনস্ট্রাক্টর (এরর)

public class Student {
    public final String name;
    public final int age;

    public final Student() { // কম্পাইল এরর
        this.name = "Raju";
        this.age = 20;
    }

    public void display() {
        System.out.println("Name of the Student: " + this.name);
        System.out.println("Age of the Student: " + this.age);
    }

    public static void main(String args[]) {
        new Student().display();
    }
}

কম্পাইল টাইম এরর

Student.java:6: error: modifier final not allowed here
    public final Student(){
    ^
1 error

সারসংক্ষেপ: কনস্ট্রাক্টর ইনহেরিটেবল ন होने के কারণে এটি ওভাররাইড করা যায় না, তাই final মডিফায়ার এখানে অর্থহীন এবং জাভা এটিকে বাধা দিয়েছে।

  1. জাভাতে ফাইনাল প্যারামিটার কী

  2. জাভাতে ফাইনাল ক্লাস

  3. জাভাতে ফাইনাল ভেরিয়েবল

  4. জাভাতে final কীওয়ার্ড