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

C++ vs Java: ইনহেরিটেন্স পার্থক্য

C++ এবং Java-তে ইনহেরিটেন্স কনসেপ্ট একই হলেও বাস্তবায়নে উল্লেখযোগ্য পার্থক্য রয়েছে।

১. Java-তে সব ক্লাস Object ক্লাস থেকে ইনহেরিট করে

Java-তে একক ইনহেরিটেন্স ট্রি থাকে (Object রুট)। C++-এ কোনো কমন বেস নেই।

// Java
MyClass obj = new MyClass();
obj instanceof Object // true

২. গ্র্যান্ডপ্যারেন্ট মেম্বার ডিরেক্ট অ্যাকসেস

Java-তে গ্র্যান্ডপ্যারেন্ট মেম্বার ডিরেক্ট অ্যাকসেস করা যায় না (super.super.x অবৈধ)। C++-এ স্কোপ রেজোলিউশন দিয়ে সম্ভব (GrandParent::x)।

৩. protected ভিজিবিলিটি পার্থক্য

Java-তে protected মেম্বার একই প্যাকেজের যেকোনো ক্লাস থেকে অ্যাকসেসযোগ্য (ইনহেরিটেন্স ছাড়াও)। C++-এ শুধু ডেরাইভড ক্লাস ও ফ্রেন্ড থেকে অ্যাকসেসযোগ্য।

// Java - একই প্যাকেজে
class Test { void foo() { MyClass obj = new MyClass(); obj.protectedMember = 10; } } // OK

৪. ইনহেরিটেন্স স্পেসিফায়ার

C++-এ public/protected/private ইনহেরিটেন্স থাকে। Java-তে শুধু extends (ইমপ্লিসিটলি পাবলিক)।

৫. ভার্চুয়াল মেথড

Java-তে সব মেথড ডিফল্টলি ভার্চুয়াল (ওভাররাইডেবল)। C++-এ এক্সপ্লিসিট virtual লাগে।

৬. মাল্টিপল ইনহেরিটেন্স

C++-এ সরাসরি মাল্টিপল ইনহেরিটেন্স সাপোর্ট। Java-তে নেই, ইন্টারফেস ব্যবহার করে এফেক্ট পাওয়া যায় (ডায়মন্ড প্রোব্লেম এড়াতে)।

সারসংক্ষেপ: Java ইনহেরিটেন্স সহজ ও নিরাপদ (সিঙ্গেল রুট, ইন্টারফেস-ভিত্তিক মাল্টিপল), C++ বেশি ফ্লেক্সিবল কিন্তু জটিল (মাল্টিপল ইনহেরিটেন্স, ভার্চুয়াল ইনহেরিটেন্স, স্পেসিফায়ার)।

  1. C++-এ মাল্টিপল ইনহেরিট্যান্স

  2. জাভাতে মাল্টিলেভেল ইনহেরিট্যান্স

  3. জাভাতে সিঙ্গেল লেভেল ইনহেরিট্যান্স

  4. জাভাতে ইনহেরিট্যান্সের প্রকারভেদ