কম্পিউটার

C++ বনাম জাভাতে উত্তরাধিকার


C++ এবং জাভাতে, উত্তরাধিকারের ধারণা রয়েছে। উত্তরাধিকার বৈশিষ্ট্যগুলি কোডটি পুনরায় ব্যবহার করতে এবং দুটি বস্তুর মধ্যে সম্পর্ক তৈরি করতে ব্যবহৃত হয়। এখানে আমরা C++ এর উত্তরাধিকার এবং জাভাতে উত্তরাধিকারের মধ্যে কিছু মৌলিক পার্থক্য দেখতে পাব।

  • জাভাতে, সমস্ত ক্লাস অবজেক্ট ক্লাস প্রসারিত করছে। তাই সর্বদা ক্লাসের একটি একক স্তরের উত্তরাধিকার গাছ থাকে। গাছের মূলে অবজেক্ট ক্লাস থাকে। আসুন আমরা একটি সাধারণ কোড ব্যবহার করে এটি সত্য কিনা তা পরীক্ষা করি৷

উদাহরণ

//This is present in the different file named MyClass.java
public class MyClass {
   MyClass() {
      System.out.println("This is constructor of MyClass.");
   }
}
//This is present the different file named Test.Java
public class Test {
   public static void main(String[] args) {
      MyClass obj = new MyClass();
      System.out.println("obj is an instance of Object: " + (obj instanceof Object));
   }
}

আউটপুট

This is constructor of MyClass.
obj is an instance of Object: true
  • জাভাতে, দাদা-দাদি ক্লাসের সদস্যরা সরাসরি বট অ্যাক্সেস করতে পারে।

  • C++ এর তুলনায় জাভাতে সুরক্ষিত দৃশ্যমানতা কিছুটা আলাদা। জাভাতে বেস ক্লাসের সুরক্ষিত সদস্যরা একই প্যাকেজের অন্য ক্লাস থেকে অ্যাক্সেসযোগ্য, এমনকি যদি সেই ক্লাসটি বেস ক্লাস থেকে প্রাপ্ত না হয়। এখানে MyClass এর সুরক্ষিত সদস্য পরীক্ষা থেকে অ্যাক্সেসযোগ্য হতে পারে।

উদাহরণ

//This is present in the different file named MyClass.java
public class MyClass {
   protected int x = 10;
   protected int y = 20;
}
//This is present the different file named Test.Java
public class Test {
   public static void main(String[] args) {
      MyClass obj = new MyClass();
      System.out.println("x is: " + obj.x + " y is: " + obj.y);
   }
}

আউটপুট

x is: 10 y is: 20
  • জাভাতে, আমরা উত্তরাধিকারের জন্য এক্সটেন্ডস কীওয়ার্ড ব্যবহার করতে জাভা করি। C++ এ, আমরা পাবলিক, সুরক্ষিত এবং ব্যক্তিগত মত উত্তরাধিকারের দৃশ্যমানতা নির্ধারণ করতে পারি, কিন্তু এখানে আমরা দৃশ্যমানতা পরিবর্তন করতে পারি না। তাই যদি কিছু সদস্য সর্বজনীন হয় বা বেস ক্লাসে সুরক্ষিত হয়, তবে তারাও সর্বজনীন হবে বা প্রাপ্ত শ্রেণীতেও সুরক্ষিত থাকবে।

  • জাভাতে সমস্ত পদ্ধতি ডিফল্টরূপে ভার্চুয়াল। C++ এ, আমাদের ভার্চুয়াল কীওয়ার্ড নির্দিষ্ট করতে হবে।

  • C++ এ, আমরা একাধিক উত্তরাধিকার ব্যবহার করতে পারি। জাভাতে, আমরা সরাসরি একাধিক উত্তরাধিকার তৈরি করতে পারি না। অস্পষ্টতা কমাতে, জাভা একাধিক উত্তরাধিকারের প্রভাব পেতে ইন্টারফেস সমর্থন করে। ইন্টারফেসগুলি সম্পূর্ণরূপে বিমূর্ত বেস ক্লাস, যেখানে কোনও ফাংশন সম্পূর্ণ নয়, তাই কোনও অস্পষ্টতা নেই৷


  1. C++ এ একাধিক উত্তরাধিকার

  2. জাভাতে বহুস্তরীয় উত্তরাধিকার

  3. জাভাতে একক স্তরের উত্তরাধিকার

  4. জাভাতে উত্তরাধিকারের ধরন