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

জাভাতে ব্ল্যাঙ্ক ফাইনাল ভেরিয়েবল সব কনস্ট্রাক্টরে এক্সপ্লিসিটলি ইনিশিয়ালাইজ করতে হয় কেন?

যে final ভেরিয়েবলটি ডিক্লেয়ার করার সময় ইনিশিয়ালাইজ করা হয় না, তাকে ব্ল্যাঙ্ক ফাইনাল ভেরিয়েবল (Blank Final Variable) বলে।

সাধারণ ইনস্ট্যান্স ভেরিয়েবলগুলো যদি কনস্ট্রাক্টরে ইনিশিয়ালাইজ না করা থাকে, তবে কম্পাইলার ডিফল্ট কনস্ট্রাক্টরে ডিফল্ট ভ্যালু (null, 0, false) দিয়ে ইনিশিয়ালাইজ করে দেয়। কিন্তু ব্ল্যাঙ্ক ফাইনাল ভেরিয়েবলগুলো ডিফল্ট ভ্যালু পায় না। ফলে যদি কনস্ট্রাক্টরে এক্সপ্লিসিটলি ইনিশিয়ালাইজ না করা থাকে, তবে কম্পাইল টাইম এরর হয়।

উদাহরণ: ইনিশিয়ালাইজেশন ছাড়া (এরর)

public class Student {
    public final String name; // Blank final variable

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

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

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

Student.java:3: error: variable name not initialized in the default constructor
    private final String name;
                         ^
1 error

নিয়ম: ফাইনাল ভেরিয়েবল ডিক্লেয়ার করলে সেটি অবশ্যই ইনিশিয়ালাইজ করতে হবে। যদি ক্লাসে একাধিক কনস্ট্রাক্টর থাকে, তবে প্রতিটি কনস্ট্রাক্টরে ব্ল্যাঙ্ক ফাইনাল ভেরিয়েবল ইনিশিয়ালাইজ করতে হবে।

উদাহরণ: সব কনস্ট্রাক্টরে ইনিশিয়ালাইজেশন (সঠিক)

public class Student {
    public final String name;

    public Student() {
        this.name = "Raju"; // ডিফল্ট কনস্ট্রাক্টরে ইনিশিয়ালাইজেশন
    }

    public Student(String name) {
        this.name = name; // প্যারামিটারাইজড কনস্ট্রাক্টরে ইনিশিয়ালাইজেশন
    }

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

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

আউটপুট

Name of the Student: Raju
Name of the Student: Radha

অ্যাল্টারনেটিভ: ইনস্ট্যান্স ইনিশিয়ালাইজার ব্লক ({ name = "Default"; }) ব্যবহার করলেও সব কনস্ট্রাক্টরের জন্য একবারই ইনিশিয়ালাইজেশন হয়ে যায়।

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

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

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

  4. "ফ্রি ওয়েবসাইট" কেন সম্পূর্ণরূপে এড়িয়ে চলা উচিত