আমার ক্লাসটি যদি implements
কোনও ইন্টারফেস হয় তবে আমি কি বলতে পারি যে আমি উত্তরাধিকার অনুসরণ করছি? আমি জানি যে যখন ক্লাস extends
অন্য ক্লাস হয় তখন তার উত্তরাধিকার।
আমার ক্লাসটি যদি implements
কোনও ইন্টারফেস হয় তবে আমি কি বলতে পারি যে আমি উত্তরাধিকার অনুসরণ করছি? আমি জানি যে যখন ক্লাস extends
অন্য ক্লাস হয় তখন তার উত্তরাধিকার।
উত্তর:
আপডেট: আমি এই উত্তরটি সংশোধন করেছি। বেশ কয়েকটি ভাল পয়েন্টগুলি সেই মন্তব্যে উত্থাপিত হয়েছিল যেগুলি কল করার উপযুক্ত ছিল।
যদি আমার ক্লাস কোনও ইন্টারফেস প্রয়োগ করে তবে আমি কি বলতে পারি যে আমি উত্তরাধিকার অনুসরণ করছি?
"উত্তরাধিকার অনুসরণ করে" বলতে আপনার অর্থ কী তা সম্পূর্ণভাবে পরিষ্কার নয়। একটু ভিন্ন প্রশ্ন জিজ্ঞাসা করা যাক?
উত্তরাধিকার কী?
এগুলি সূক্ষ্মভাবে পৃথক। এটি দুর্ভাগ্যজনক কারণ এটি বিভ্রান্তিকর।
এই সূক্ষ্ম পার্থক্য থেকে সাধারণত কোন বিভ্রান্তি দেখা দেয়?
বিভ্রান্তি দেখা দিতে পারে কারণ লোকেরা উত্তরাধিকারকে বাস্তবায়নের বিশদ ভাগ করে নেওয়ার প্রক্রিয়া হিসাবে মনে করে। যদিও এটা হল এমন একটি প্রক্রিয়া, যে প্রক্রিয়া ভাগ করে কাজ করে সদস্যদের । সেই সদস্যদের বাস্তবায়ন দরকার নেই! যেমনটি আমরা দেখব, তারা বিমূর্ত হতে পারে।
আমি ব্যক্তিগতভাবে আরও খুশি হব যদি জাভা এবং সি # স্পেসিফিকেশনগুলি এই বিভ্রান্তি এড়াতে ইন্টারফেস পদ্ধতি এবং শ্রেণীর মধ্যে সম্পর্কের বর্ণনা দেওয়ার জন্য "উত্তরাধিকার সূত্রে" অন্য কোনও শব্দ ব্যবহার করে। তবে তারা তা করে না, এবং আমাদের স্পেসিফিকেশনগুলি থেকে তাদের বিরুদ্ধে নয়, তর্ক করতে হবে।
জাভাতে, ইন্টারফেস সদস্যরা ক্লাস দ্বারা উত্তরাধিকার সূত্রে প্রাপ্ত যা তাদের প্রয়োগ করে?
হ্যাঁ, কিছু আছে। জাভা স্পেসিফিকেশন বিভাগ 8.4.8 দেখুন, যা আমি আপনার সুবিধার জন্য এখানে উদ্ধৃত করেছি।
একটি শ্রেণি সি এর প্রত্যক্ষ সুপারক্লাস এবং ডাইরেক্ট সুপারিনটারফেসগুলি সমস্ত বিমূর্ত এবং ডিফল্ট পদ্ধতিগুলি থেকে উত্তরাধিকার সূত্রে প্রাপ্ত হয় যার জন্য নিম্নলিখিতগুলির সমস্ত সত্য: [...]
আপনি যদি বলেন যে কোনও শ্রেণি একটি ইন্টারফেস প্রয়োগ করে তবে শ্রেণিটি সেই ইন্টারফেসের বিমূর্ত এবং ডিফল্ট পদ্ধতির উত্তরাধিকার সূত্রে প্রাপ্ত হয় । (অবশ্যই আমি অনুসরণকারী শর্তগুলি বাদ দিয়েছি; বিশদের জন্য বিশদটি দেখুন particular বিশেষত, কোনও শ্রেণি যা ইন্টারফেসের সদস্যকে প্রয়োগ করে সেই সদস্যটিকে উত্তরাধিকার সূত্রে প্রাপ্ত বলে মনে করা হয় না Again আবার, এটি কি বিভ্রান্তিকর? হ্যাঁ))
আমরা কি জাভাতে সাধারণত বলি যে কোনও শ্রেণি ইন্টারফেস থেকে উত্তরাধিকার সূত্রে প্রাপ্ত?
সাধারণত আমরা বলব যে একটি শ্রেণি একটি ইন্টারফেস প্রয়োগ করে । উপরে উল্লিখিত হিসাবে, একটি শ্রেণি ইন্টারফেস থেকে সদস্যদের উত্তরাধিকারী হতে পারে , এবং এখনও ইন্টারফেস থেকে উত্তরাধিকারী বলা হবে না। যা বিভ্রান্তিকর, হ্যাঁ
এই সূক্ষ্ম পার্থক্য কি প্রতিদিন কাজ করে?
সাধারণত না। স্পেসিফিকেশনের এই ধরণের সংকীর্ণ পার্সিং ব্যবসায়িক বিকাশকারীদের লাইনের চেয়ে লেখককে সংকলন করতে আরও কার্যকর। "উত্তরাধিকার সূত্রে প্রাপ্ত" এর একটি সুনির্দিষ্ট সংজ্ঞা পাওয়ার চেয়ে ইন্টারফেসটি কখন ব্যবহার করা উচিত তা বোঝা আরও গুরুত্বপূর্ণ।
java
সুতরাং এটি সঠিক উত্তর, যদি না অপিটি অন্য কোনও বোঝায় java
:-)
উত্তরাধিকার অর্থ সুপারক্লাসের জন্য একটি নতুন সাবক্লাস লেখা। একটি ইন্টারফেসের বিরুদ্ধে একটি নতুন শ্রেণি লেখা সেই ইন্টারফেসটি বাস্তবায়ন করে। (এবং একটি পুরানো উপর ভিত্তি করে একটি নতুন ইন্টারফেস লিখতে যে ইন্টারফেস প্রসারিত হয় ।)
তিনটি সম্ভাবনার ক্ষেত্রে প্রযোজ্য একমাত্র সঠিক শব্দটি হ'ল সাবটাইপিং । প্রতিটি উপপ্রকার একটি সাবক্লাস নয়।
সঙ্গে উপশ্রেণী , আপনি
সঙ্গে ইন্টারফেস , আপনার দ্বারা একটি চুক্তি হরতাল বাস্তবায়নের ঘোষণা পদ্ধতি।
এটি দেখার জন্য এটি ধ্রুপদী উপায়। এখন জাভা 8 এর সাথে ইন্টারফেসগুলি একটি মিশ্রণে পরিণত হয়:
এমন একটি ইন্টারফেস বাস্তবায়ন করবে যার পদ্ধতিগুলির সকলের ডিফল্ট বাস্তবায়ন এখনও 'বাস্তবায়ন' হিসাবে গণ্য হবে, না বরং এক্সটেনশন হিসাবে গণ্য হবে? আমি বলতে পারলাম না। যেহেতু এই কেসটি বরং সুদূরপ্রসারী (এটি প্রকৃতপক্ষে রাষ্ট্রবিহীন বহু-উত্তরাধিকারকে সক্ষম করেছে), আমি এখনও কেবলমাত্র সাবক্লাসের সাথে 'উত্তরাধিকার' ব্যবহার করব।