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++ বেশি ফ্লেক্সিবল কিন্তু জটিল (মাল্টিপল ইনহেরিটেন্স, ভার্চুয়াল ইনহেরিটেন্স, স্পেসিফায়ার)।