Superclass এবং Inheritance Tree Access করা (getSuperclass())

Interfaces এবং Superclasses Access - জাভা রিফ্লেক্ট প্যাকেজ (Java.reflect Package) - Java Technologies

256

Java Reflection API একটি শক্তিশালী টুল যা আপনাকে রানটাইমে ক্লাসের মেটাডেটা অ্যাক্সেস করার সুবিধা দেয়। এটি শুধু ক্লাসের ফিল্ড, মেথড, কনস্ট্রাক্টর ইত্যাদি অ্যাক্সেস করতে সাহায্য করে না, বরং Superclass এবং Inheritance Tree-এরও তথ্য প্রদান করতে পারে।

getSuperclass() মেথড

getSuperclass() মেথডটি একটি ক্লাসের সুপার ক্লাস (superclass) বা এর মূল শ্রেণী (parent class) সম্পর্কে তথ্য প্রদান করে। এটি Class ক্লাসের একটি মেথড যা আপনাকে একটি ক্লাসের ইনহেরিটেন্স চেইন (inheritance chain) এর প্রথম স্তর (level) পর্যন্ত জানাতে সাহায্য করে।

getSuperclass() মেথডের কার্যকারিতা:

  • এই মেথডটি একটি Class অবজেক্ট রিটার্ন করে, যা ক্লাসটির সুপার ক্লাসকে উপস্থাপন করে।
  • যদি ক্লাসটির কোনো সুপার ক্লাস না থাকে (যেমন Object ক্লাস), তবে এটি null রিটার্ন করবে।

Syntax:

Class<?> getSuperclass()

কীভাবে getSuperclass() কাজ করে:

  1. Superclass: getSuperclass() মেথডটি ক্লাসের direct parent কে রিটার্ন করে।
  2. Inheritance Tree: আপনি একাধিক getSuperclass() কল করে পুরো ইনহেরিটেন্স ট্রি (inheritance tree) অ্যাক্সেস করতে পারেন, অর্থাৎ আপনি দেখতে পারবেন ক্লাসটি কোথা থেকে ইনহেরিট করেছে এবং এর প্যারেন্ট ক্লাসগুলো কী।

উদাহরণ:

উদাহরণ 1: getSuperclass() ব্যবহার করে Superclass Access করা

class Animal {
    public void eat() {
        System.out.println("Animal is eating");
    }
}

class Dog extends Animal {
    public void bark() {
        System.out.println("Dog is barking");
    }
}

public class ReflectionExample {
    public static void main(String[] args) {
        Dog dog = new Dog();

        // Dog ক্লাসের Superclass পাওয়া
        Class<?> cls = dog.getClass();
        Class<?> superclass = cls.getSuperclass();

        // Superclass এর নাম প্রিন্ট করা
        System.out.println("Superclass of Dog: " + superclass.getName());
    }
}

কোড বিশ্লেষণ:

  1. Dog ক্লাসের একটি অবজেক্ট তৈরি করা: প্রথমে Dog ক্লাসের একটি অবজেক্ট dog তৈরি করা হয়।
  2. getClass() মেথড: dog.getClass() ব্যবহার করে আমরা Dog ক্লাসের Class অবজেক্ট পাই।
  3. getSuperclass() মেথড: cls.getSuperclass() কল করে আমরা Dog ক্লাসের সুপার ক্লাস (superclass) পেয়ে যাই, যা Animal
  4. superclass.getName(): superclass.getName() ব্যবহার করে আমরা Animal ক্লাসের নাম প্রিন্ট করি।

আউটপুট:

Superclass of Dog: Animal

উদাহরণ 2: পুরো Inheritance Tree Traversal (superclass chain)

আপনি একাধিক getSuperclass() মেথড কল করে একটি ক্লাসের ইনহেরিটেন্স ট্রি অনুসন্ধান করতে পারেন। উদাহরণস্বরূপ, Dog ক্লাসের ইনহেরিটেন্স ট্রি দেখতে চাইলে:

class Animal {
    public void eat() {
        System.out.println("Animal is eating");
    }
}

class Dog extends Animal {
    public void bark() {
        System.out.println("Dog is barking");
    }
}

public class InheritanceTreeExample {
    public static void main(String[] args) {
        Dog dog = new Dog();

        // Dog ক্লাসের ইনহেরিটেন্স ট্রি ট্রাভার্স
        Class<?> cls = dog.getClass();
        while (cls != null) {
            System.out.println("Class: " + cls.getName());
            cls = cls.getSuperclass();
        }
    }
}

কোড বিশ্লেষণ:

  1. dog.getClass(): প্রথমে Dog ক্লাসের Class অবজেক্ট পাওয়া যায়।
  2. while (cls != null): একটি লুপ চালিয়ে পুরো ইনহেরিটেন্স ট্রি ট্রাভার্স করা হয়। যতক্ষণ না সুপার ক্লাস null হয়ে যায় (যতক্ষণ না আমরা Object ক্লাসে পৌঁছাই), ততক্ষণ পর্যন্ত getSuperclass() মেথড কল করা হয়।
  3. cls.getName(): প্রতিটি ক্লাসের নাম প্রিন্ট করা হয়।

আউটপুট:

Class: Dog
Class: Animal
Class: java.lang.Object

এটা কিভাবে কাজ করে?

  1. Dog ক্লাস: প্রথমে Dog ক্লাসের নাম প্রিন্ট করা হয়।
  2. Animal ক্লাস: তারপর Dog ক্লাসের সুপার ক্লাস Animal পাওয়া যায়।
  3. Object ক্লাস: Animal ক্লাসের সুপার ক্লাস Object (Java-এর মূল সুপার ক্লাস) হওয়ায় এটি ট্রাভার্সের শেষ প্রান্ত।

Object ক্লাস এবং getSuperclass()

যেকোনো ক্লাসের সুপার ক্লাস শেষ পর্যন্ত Object হবে, কারণ সব ক্লাসের (যেগুলো ইউজার ডিফাইনড) Object ক্লাস থেকে ইনহেরিট করা হয়। Object ক্লাসের কোনো সুপার ক্লাস নেই, তাই getSuperclass() কল করলে এটি null রিটার্ন করবে।

উদাহরণ 3: Object ক্লাসের getSuperclass()

public class ObjectClassExample {
    public static void main(String[] args) {
        // Object ক্লাসের ইনহেরিটেন্স ট্রি ট্রাভার্স
        Class<?> cls = Object.class;
        Class<?> superclass = cls.getSuperclass();

        // Object ক্লাসের Superclass প্রিন্ট করা
        System.out.println("Superclass of Object: " + superclass);
    }
}

কোড বিশ্লেষণ:

  1. Object.class ব্যবহার করা হয়েছে যা Object ক্লাসের Class অবজেক্ট প্রদান করে।
  2. getSuperclass() কল করলে এটি null রিটার্ন করবে, কারণ Object ক্লাসের কোনো সুপার ক্লাস নেই।

আউটপুট:

Superclass of Object: null
  • getSuperclass() মেথডটি একটি ক্লাসের সরাসরি সুপার ক্লাসের তথ্য প্রদান করে।
  • আপনি একাধিক getSuperclass() কল করে ইনহেরিটেন্স ট্রি সম্পূর্ণভাবে ট্রাভার্স করতে পারেন।
  • Object ক্লাসের সুপার ক্লাস null রিটার্ন করে, কারণ এটি জাভার মূল ক্লাস এবং অন্য কোনো ক্লাস থেকে ইনহেরিট হয় না।
  • Inheritance Tree Traversal এর মাধ্যমে আপনি পুরো ইনহেরিটেন্স চেইন বা হায়ারার্কি দেখতে পারেন, যা ডিবাগিং এবং কোড বিশ্লেষণে সহায়ক হতে পারে।
Content added By
Promotion

Are you sure to start over?

Loading...