Constructor এবং Destructor কি? Java তে Constructor কিভাবে কাজ করে?

Java এর OOPs Concepts সম্পর্কিত প্রশ্নাবলী - জাভা ইন্টারভিউ প্রশ্ন (Java Interview Questions) - Java Technologies

568

Java তে Constructor এবং Destructor দুটি গুরুত্বপূর্ণ ধারণা, যা Object-Oriented Programming (OOP) এর মূল অংশ। এই দুটি ব্যবহার করে ক্লাসের অবজেক্ট তৈরি এবং ধ্বংস করা হয়।


১. Constructor:

Constructor একটি বিশেষ ধরনের মেথড যা একটি ক্লাসের অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে কল হয়। এটি new কিওয়ার্ডের সাথে ব্যবহৃত হয় এবং একটি ক্লাসের নতুন অবজেক্ট তৈরি করে।

Constructor এর বৈশিষ্ট্য:

  1. নাম: Constructor এর নাম অবশ্যই ক্লাসের নামের সাথে মিল থাকতে হবে।
  2. রিটার্ন টাইপ: Constructor এর কোনো রিটার্ন টাইপ (যেমন void, int, String ইত্যাদি) থাকে না।
  3. অটোমেটিক কল: একটি অবজেক্ট তৈরি করার সময় স্বয়ংক্রিয়ভাবে constructor কল হয়।
  4. উদ্দেশ্য: Constructor ব্যবহার করা হয় অবজেক্টের প্রাথমিক মান সেট করার জন্য বা অবজেক্টের ইনিশিয়ালাইজেশন করার জন্য।

Constructor এর ধরন:

  1. ডিফল্ট Constructor (Default Constructor):

    • যদি কোন কনস্ট্রাক্টর না দেওয়া হয়, তাহলে Java স্বয়ংক্রিয়ভাবে একটি ডিফল্ট কনস্ট্রাক্টর তৈরি করে, যা কোন প্যারামিটার নেয় না এবং অবজেক্টের সব ফিল্ডের মান ডিফল্ট মানে সেট করে।

    উদাহরণ:

    class Person {
        String name;
        int age;
    
        // Default Constructor
        public Person() {
            name = "Unknown";
            age = 0;
        }
    
        void display() {
            System.out.println("Name: " + name + ", Age: " + age);
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Person p = new Person(); // Default constructor will be called
            p.display();
        }
    }
    
  2. প্যারামিটারাইজড Constructor (Parameterized Constructor):

    • এই ধরনের কনস্ট্রাক্টর ক্লাসের অবজেক্ট তৈরি করার সময় প্যারামিটার গ্রহণ করে এবং ফিল্ডের মান ইনিশিয়ালাইজ করতে সহায়তা করে।

    উদাহরণ:

    class Person {
        String name;
        int age;
    
        // Parameterized Constructor
        public Person(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        void display() {
            System.out.println("Name: " + name + ", Age: " + age);
        }
    }
    
    public class Main {
        public static void main(String[] args) {
            Person p = new Person("Alice", 25); // Parameterized constructor is called
            p.display();
        }
    }
    

Constructor এর কাজ:

  • Constructor অবজেক্টের প্রাথমিক মান সেট করে। এটি তখনই কল হয়, যখন একটি অবজেক্ট তৈরি হয়।
  • this কীওয়ার্ড ব্যবহার করে বর্তমান ক্লাসের ফিল্ডগুলিকে ইনিশিয়ালাইজ করা হয়।
  • Constructor overloading: একাধিক কনস্ট্রাক্টর থাকতে পারে, যেখানে প্যারামিটার ভিন্ন ভিন্ন হতে পারে। এটি constructor overloading নামে পরিচিত।

Constructor এর ব্যবহার:

  • অবজেক্ট তৈরি করার সময় এর ইনিশিয়ালাইজেশন করা।
  • Constructor chaining: একটি কনস্ট্রাক্টর থেকে অন্য কনস্ট্রাক্টরকে কল করা যায়।
class Person {
    String name;
    int age;

    // First constructor
    public Person(String name) {
        this.name = name;
    }

    // Second constructor using constructor chaining
    public Person(String name, int age) {
        this(name); // Calling the first constructor
        this.age = age;
    }

    void display() {
        System.out.println("Name: " + name + ", Age: " + age);
    }
}

public class Main {
    public static void main(String[] args) {
        Person p1 = new Person("Alice");
        Person p2 = new Person("Bob", 30);
        p1.display();
        p2.display();
    }
}

২. Destructor:

Java তে Destructor এর কোনো সুস্পষ্ট ধারণা নেই। যেহেতু Java তে Garbage Collection ব্যবস্থা রয়েছে, যেখানে JVM স্বয়ংক্রিয়ভাবে অব্যবহৃত অবজেক্টগুলিকে মেমরি থেকে মুছে দেয়, তাই Java তে ডেস্ট্রাক্টর প্রয়োজন হয় না।

Destructor এর কাজ:

  • Destructor একটি বিশেষ মেথড যা অবজেক্ট ধ্বংস বা মুছে ফেলার সময় কল হয়। তবে Java তে destructor এর কোনো সরাসরি সমাধান নেই।
  • Java তে মেমরি ব্যবস্থাপনা গ্যারেজ কালেকশনের মাধ্যমে করা হয়। এটি অব্যবহৃত অবজেক্টগুলোকে স্বয়ংক্রিয়ভাবে মুছে ফেলে।

Java তে Destructor এর প্রতিস্থাপন:

Java তে finalize() মেথড ব্যবহার করা যেতে পারে, তবে এটি সাধারণত এখন পরিহার করা হয় এবং garbage collection এর মাধ্যমে কাজ হয়।

finalize() Method Example:

class MyClass {
    @Override
    protected void finalize() throws Throwable {
        System.out.println("Object is being garbage collected");
        super.finalize();
    }
}

public class Main {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        obj = null; // Object becomes eligible for garbage collection

        System.gc(); // Request garbage collection
    }
}
  • finalize() মেথডটি অবজেক্ট যখন গ্যারেজ কালেকশন হবে, তখন কল করা হয়, তবে এটি নিশ্চিত নয় যে এটি সবসময় কল হবে।

Garbage Collection:

Java তে Garbage Collector (GC) একটি বিশেষ প্রক্রিয়া যা অপ্রয়োজনীয় অবজেক্টগুলো মুছে দেয় এবং মেমরি মুক্ত করে। এটি নিজে নিজে কাজ করে, এবং ডেস্ট্রাক্টরের মতো কোনো explicit method কল করার প্রয়োজন হয় না।


  • Constructor হল একটি বিশেষ মেথড যা অবজেক্ট তৈরি হওয়ার সময় স্বয়ংক্রিয়ভাবে কল হয় এবং অবজেক্টের প্রাথমিক মান ইনিশিয়ালাইজ করতে ব্যবহৃত হয়।
  • Destructor Java তে নেই, কারণ Garbage Collection প্রক্রিয়া অব্যবহৃত অবজেক্টগুলোকে স্বয়ংক্রিয়ভাবে মুছে দেয়। তবে finalize() মেথড ব্যবহার করা যেতে পারে, যা অবজেক্টের ধ্বংস প্রক্রিয়া সম্পর্কে কিছু পর্যালোচনা করতে সাহায্য করে।
Content added By
Promotion

Are you sure to start over?

Loading...