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

জাভাতে ইনহেরিটেন্স এবং কম্পোজিশনের পার্থক্য

কম্পোজিশন একটি ডিজাইন টেকনিক যেখানে আপনার ক্লাসে অন্য একটি ক্লাসের ইনস্ট্যান্স ফিল্ড হিসেবে থাকে। ইনহেরিটেন্স একটি মেকানিজম যেখানে একটি অবজেক্ট পেরেন্ট ক্লাস এক্সটেন্ড করে তার প্রোপার্টি ও বিহেভিয়র অর্জন করে।

দুটি কোড রিয়ুজাবিলিটি দেয় ক্লাস রিলেট করে। কম্পোজিশন দিয়ে ইনহেরিটেন্সের ফাংশনালিটি পাওয়া যায়। নিচে পার্থক্যগুলো:

ক্রমিক নং কী ইনহেরিটেন্স কম্পোজিশন
১ বেসিক "is-a" রিলেশনশিপ (যেমন Dog is an Animal) "has-a" রিলেশনশিপ (যেমন College has a Student)
২ কোড রিয়ুজ এক ক্লাস শুধু এক ইন্টারফেস/ক্লাস এক্সটেন্ড করতে পারে, তাই এক ক্লাসে রিয়ুজ সীমিত একাধিক ক্লাস থেকে কোড রিয়ুজ করা যায়
৩ স্কোপ কম্পাইল টাইমে ফিচার প্রদান করে রানটাইমে সহজে অর্জন করা যায়
৪ Final ক্লাস Final ক্লাস থেকে কোড রিয়ুজ করা যায় না Final ক্লাস থেকেও কোড রিয়ুজ করা যায়
৫ মেথড এক্সপোজার পেরেন্ট ক্লাসের public এবং protected মেথড এক্সপোজ করে এکسপোজ করে না, পাবলিক ইন্টারফেস দিয়ে ইন্টারঅ্যাক্ট করে

ইনহেরিটেন্স উদাহরণ

class Animal {
    String name = "Orio";
}

class Dog extends Animal {
    String type = "Dog";
    
    public static void main(String args[]) {
        Dog p = new Dog();
        System.out.println("Name: " + p.name);
        System.out.println("Type: " + p.type);
    }
}

কম্পোজিশন উদাহরণ

public class Student { }

public class College {
    private Student student;
    
    public College() {
        this.student = new Student();
    }
}

সেরা অভ্যাস: "Composition over Inheritance" — কম্পোজিশন বেশি ফ্লেক্সিবল, টেস্টেবল এবং কাপলিং কম। ইনহেরিটেন্স শুধু তখনই যখন স্পষ্ট "is-a" রিলেশনশিপ থাকে এবং পেরেন্ট ক্লাস এক্সটেনশনের জন্য ডিজাইন করা থাকে।

  1. জাভাতে ইনহেরিটেন্স এবং কম্পোজিশনের পার্থক্য

  2. জাভাতে Thread এবং Runnable-এর পার্থক্য

  3. জাভাতে Exception এবং Error-এর পার্থক্য

  4. জাভাতে Serialization এবং Externalization-এর পার্থক্য