কম্পিউটার

জাভাতে ডিফল্ট পদ্ধতি ব্যবহার করে ডায়মন্ড সমস্যা কীভাবে সমাধান করবেন


উত্তরাধিকার দুটি শ্রেণীর মধ্যে একটি সম্পর্ক যেখানে একটি শ্রেণী অন্য শ্রেণীর বৈশিষ্ট্যের উত্তরাধিকারী হয়। এই সম্পর্কটিকে −

হিসাবে extensions কীওয়ার্ড ব্যবহার করে সংজ্ঞায়িত করা যেতে পারে <প্রে>

পাবলিক ক্লাস A B{

প্রসারিত করে }

যে শ্রেণীর বৈশিষ্ট্যগুলি উত্তরাধিকারসূত্রে পাওয়া যায় সেটিকে সাব ক্লাস বা চাইল্ড ক্লাস বলা হয় এবং যে শ্রেণীটির বৈশিষ্ট্যগুলি উত্তরাধিকার সূত্রে প্রাপ্ত হয় সেটি হল সুপার ক্লাস বা, প্যারেন্ট ক্লাস।

উত্তরাধিকার সূত্রে সুপার ক্লাস সদস্যদের একটি অনুলিপি সাব ক্লাস অবজেক্টে তৈরি করা হয়। অতএব, সাব ক্লাস অবজেক্ট ব্যবহার করে আপনি উভয় শ্রেণীর সদস্যদের অ্যাক্সেস করতে পারবেন।

একাধিক উত্তরাধিকার হল যেখানে একটি শ্রেণী একাধিক শ্রেণীর বৈশিষ্ট্যের উত্তরাধিকারী হয়। অন্য কথায়, একাধিক উত্তরাধিকারে আমাদের একটি চাইল্ড ক্লাস এবং n নম্বর প্যারেন্ট ক্লাস থাকতে পারে। জাভা একাধিক উত্তরাধিকার সমর্থন করে না (ক্লাস সহ)।

হীরার সমস্যা

  • উদাহরণস্বরূপ, আমরা ধরে নিই যে Java একাধিক উত্তরাধিকার সমর্থন করে।
  • এবং যদি আমাদের নমুনা নামে একটি বিমূর্ত শ্রেণী থাকে একটি বিমূর্ত পদ্ধতির সাথে ডেমো().
  • তারপর যদি একই প্যাকেজের অন্য দুটি ক্লাস এই ক্লাসটি প্রসারিত করে এবং এর বিমূর্ত পদ্ধতি প্রয়োগ করার চেষ্টা করে, ডেমো()।
  • তারপর, উত্তরাধিকারের মৌলিক নিয়ম অনুসারে, সাবক্লাস অবজেক্টে উভয় ডেমো() পদ্ধতির একটি কপি তৈরি করা উচিত যা একই প্রোটোটাইপ (নাম এবং আর্গুমেন্ট) সহ দুটি পদ্ধতি সহ সাবক্লাস ছেড়ে যায়।
  • তারপর, আপনি যদি সাবক্লাস কম্পাইলারের অবজেক্ট ব্যবহার করে ডেমো() পদ্ধতিতে কল করেন তাহলে কোন পদ্ধতিতে কল করতে হবে তা না জেনে একটি অস্পষ্ট পরিস্থিতির সম্মুখীন হয়। এই সমস্যাটি জাভাতে ডায়মন্ড সমস্যা হিসাবে পরিচিত। জাভাতে ডিফল্ট পদ্ধতি ব্যবহার করে ডায়মন্ড সমস্যা কীভাবে সমাধান করবেন

হীরের সমস্যার সমাধান

আপনি ডিফল্ট পদ্ধতি (Java8) এবং ইন্টারফেস ব্যবহার করে জাভাতে একাধিক উত্তরাধিকার অর্জন করতে পারেন।

Java8 থেকে ওয়ার্ডে ডিফল্ট পদ্ধতি একটি ইন্টারফেসে চালু করা হয়। অন্যান্য বিমূর্ত পদ্ধতির বিপরীতে এইগুলি একটি ডিফল্ট বাস্তবায়ন সহ একটি ইন্টারফেসের পদ্ধতি। যদি আপনার কোনো ইন্টারফেসে ডিফল্ট পদ্ধতি থাকে, তাহলে যে ক্লাসগুলি ইতিমধ্যে এই ইন্টারফেসটি বাস্তবায়ন করছে সেখানে এটিকে ওভাররাইড করা (বডি প্রদান) বাধ্যতামূলক নয়৷

আপনার দুটি ভিন্ন ইন্টারফেসে একই ডিফল্ট পদ্ধতি (একই নাম এবং স্বাক্ষর) থাকতে পারে এবং একটি ক্লাস থেকে আপনি এই দুটি ইন্টারফেস বাস্তবায়ন করতে পারেন।

যদি আপনি তা করেন, তাহলে আপনাকে অবশ্যই ক্লাস থেকে ডিফল্ট পদ্ধতিটি ওভাররাইড করতে হবে যাতে ডিফল্ট পদ্ধতিটি তার ইন্টারফেসের নামের সাথে স্পষ্টভাবে উল্লেখ করা হয়।

উদাহরণ

ইন্টারফেস MyInterface1{ পাবলিক স্ট্যাটিক int num =100; সর্বজনীন ডিফল্ট অকার্যকর প্রদর্শন() { System.out.println("MyInterface1 এর প্রদর্শন পদ্ধতি"); }}ইন্টারফেস MyInterface2{ পাবলিক স্ট্যাটিক int num =1000; সর্বজনীন ডিফল্ট অকার্যকর প্রদর্শন() { System.out.println("MyInterface2 এর প্রদর্শন পদ্ধতি"); }} পাবলিক ক্লাস ইন্টারফেস উদাহরণ MyInterface1, MyInterface2{ public void display() { MyInterface1.super.display(); //অথবা, MyInterface2.super.display(); } পাবলিক স্ট্যাটিক ভ্যাইড মেইন(স্ট্রিং আর্গস[]) { ইন্টারফেস এক্সাম্পল অবজে =নতুন ইন্টারফেস এক্সাম্পল(); obj.display(); }}

আউটপুট

MyInterface2 এর MyInterface1 ডিসপ্লে পদ্ধতির প্রদর্শন পদ্ধতি

  1. কীভাবে জাভা পদ্ধতি ব্যবহার করবেন

  2. জাভাতে ডিফল্ট পদ্ধতি ব্যবহার করে হীরা সমস্যাটি কীভাবে সমাধান করবেন?

  3. জাভাতে ডিফল্ট পদ্ধতির ব্যবহার কী?

  4. জাভাতে ডিফল্ট পদ্ধতি ব্যবহার করে ডায়মন্ড সমস্যা কীভাবে সমাধান করবেন