সি # এ সমষ্টি ক্লাস এবং ইন্টারফেসের মধ্যে পার্থক্য

Anonim

মত একটি বিমূর্ত ক্লাস একটি ইন্টারফেস মত অনেক দেখায়, কিন্তু ধারণা OOP এর beginners এর জন্য একটু বিভ্রান্তিকর। ধারণাগতভাবে, একটি বিমূর্ত শ্রেণী কেবলমাত্র একটি ইন্টারফেসের মতই দেখায়, কোনও বাস্তবায়ন ছাড়াই, তবে তাদের পার্থক্যগুলির যথোপযুক্ত অংশ রয়েছে। যদিও একটি বিমূর্ত শ্রেণী আংশিকভাবে বা সম্পূর্ণরূপে বাস্তবায়িত হতে পারে, একটি ইন্টারফেস সম্পূর্ণভাবে প্রয়োগ করা আবশ্যক। ভাল, দুটি মধ্যে সবচেয়ে উল্লেখযোগ্য পার্থক্য যে একটি বিমূর্ত ক্লাস ডিফল্ট বাস্তবায়ন করতে পারে, যখন একটি ইন্টারফেস কেবল পদ্ধতির সংজ্ঞা যা শুধুমাত্র সদস্য ঘোষনা রয়েছে। আসুন বিস্তারিতভাবে উভয় তত্ত্বগত দিক নিয়ে আলোচনা করি।

একটি সমতা ক্লাস কি?

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

--২ ->

ইন্টারফেস কি?

অন্যদিকে, একটি ইন্টারফেস, এমন একটি শ্রেণী নয় যা কার্যকারিতা স্বাক্ষর করে। এটা কোন বাস্তবায়ন সঙ্গে একটি প্যাটার্ন। ধারণাগতভাবে বলা যায়, এটি শুধু পদ্ধতির সংজ্ঞা যা কেবল সদস্যদের ঘোষনা রয়েছে। এটি একটি খালি শেল যা তার সদস্যদের বাস্তবায়ন করে না। এটি একটি বিমূর্ত বেস ক্লাসের মত যা কেবল বিশিষ্ট সদস্য যেমন পদ্ধতি, ইভেন্টস, ইনডেক্সারস, প্রোপার্টি ইত্যাদি অন্তর্ভুক্ত করে। এটি সরাসরি instantiated করা যাবে না এবং এর সদস্যদের কোনো শ্রেণী দ্বারা প্রয়োগ করা যাবে। উপরন্তু, একাধিক ইন্টারফেস একটি বর্গ দ্বারা প্রয়োগ করা যেতে পারে, তবে, একটি বর্গ শুধুমাত্র একটি একক ক্লাস উত্তরাধিকারিত্ব করতে পারেন।

সমতুল্য বর্গ বি। ইন্টারফেস: সি # # একাধিক inheritance [999] - একটি ক্লাস শুধুমাত্র একটি বিমূর্ত ক্লাস ব্যবহার করতে পারে, তাই বহুবিধ উত্তরাধিকারকে সমর্থন করা হয় না। অন্যদিকে, একটি ইন্টারফেস, একাধিক উত্তরাধিকারকে সমর্থন করতে পারে, যার অর্থ একটি বর্গ যে কোন সংখ্যক উত্তরাধিকারকে উত্তরাধিকার সূত্রে প্রদান করতে পারে।

  1. সংজ্ঞা এর
  2. সমবায় শ্রেণী এবং ইন্টারফেস সি # - একটি বিমূর্ত ক্লাস একটি বিশেষ ধরনের শ্রেণী যা কোনও বাস্তবায়ন সঙ্গে সংজ্ঞা থাকতে পারে। বাস্তবায়ন লজিক তার প্রাপ্ত ক্লাস দ্বারা উপলব্ধ করা হয়। এটি বিমূর্ত পাশাপাশি অ-বিমূর্ত পদ্ধতি থাকতে পারে।অন্যদিকে, একটি ইন্টারফেস, শুধু একটি প্যাটার্ন যা কিছুই করতে পারে না। টেকনিক্যালি, এটি শুধু একটি খালি শেল। বাস্তবায়ন - একটি বিমূর্ত শ্রেণী উভয় সংজ্ঞা এবং তার বাস্তবায়ন ধারণ করতে পারে। এটি একটি অসম্পূর্ণ বর্গ যা চালু করা যাবে না। কোনও ইন্টারফেসে কেবলমাত্র কোনও কোড ছাড়াই কার্যকারিতা স্বাক্ষর থাকতে পারে।
  3. অ্যাক্সেস মডিফায়ারস
  4. - একটি বিট ক্লাসে সাবস, ফাংশন, প্রোপার্টি, ইত্যাদির মত অনেক অ্যাক্সেস মোডফিয়ার থাকতে পারে, যখন কোনও ইন্টারফেসের অ্যাক্সেস মোডফিয়ারের অনুমতি দেওয়া হয় না এবং সকল পদ্ধতিগুলি সর্বজনীন হিসাবে সংজ্ঞায়িত করা আবশ্যক। একজাতি - একটি বিমূর্ত শ্রেণী একই ধরনের, আচরণ এবং স্থিতি প্রয়োগের জন্য ব্যবহৃত হয়, যখন একটি ইন্টারফেস প্রয়োগ করা হয় যা শুধুমাত্র পদ্ধতি স্বাক্ষর ভাগ করে নেয়।
  5. ঘোষণাপত্র - একটি বিমূর্ত ক্লাস অন্য সব ক্লাসের জন্য একটি বেস ক্লাস হিসাবে কাজ করে যাতে কোনও ভেরিয়েবল ঘোষণা বা ব্যবহার করতে পারে যখন কোনও ইন্টারফেস কোন ভেরিয়েবল প্রকাশ করতে অনুমোদিত হয় না।
  6. কনস্ট্রাক্টর ঘোষণাপত্র - একটি বিট ক্লাসের কন্সট্রাকটর ঘোষণা থাকতে পারে তবে একটি ইন্টারফেসের কনস্ট্রাক্টর ঘোষণা থাকতে পারে না।
  7. কোর বনাম পেরিফেরাল - একটি বর্গ ক্লাস একটি শ্রেণীর মূল পরিচয় নির্ধারণ করতে ব্যবহৃত হয় এবং একই ডাটা টাইপ বস্তুর জন্য ব্যবহার করা যেতে পারে। একটি ইন্টারফেস, অন্য দিকে, একটি ক্লাসের পেরিফেরাল ক্ষমতা নির্ধারণ করতে ব্যবহৃত হয়।
  8. দৃঢ় বনাম সাপ্লিমেন্ট - একটি বিকাশকারীর কর্মকাণ্ডের ক্ষেত্রে একটি নিখুঁত শ্রেণী, অন্তত একটি ডেভেলপারের দৃষ্টিকোণ থেকে, যখন একটি ইন্টারফেস আরো কঠোর হয়।
  9. সমতুল্য বর্গ বনাম ইন্টারফেস: সারণি ফর্ম সমতা ক্লাস

ইন্টারফেস

ফাংশন, সাবস এবং বৈশিষ্ট্যগুলির সদস্য ঘোষণার জন্য একটি বিট ক্লাসের সকল অ্যাক্সেস মোডফিয়ার থাকতে পারে।

ফাংশন, সাবস, প্রোপার্টি, ইত্যাদির সদস্য ঘোষণার জন্য একটি ইন্টারফেসের অ্যাক্সেস মোডফিয়ারের অনুমতি দেওয়া হয় না। সব সদস্যই নিখুঁতভাবে গণনা করা হয়।

একটি ক্লাস সবচেয়ে ব্যবহার করতে পারেন শুধুমাত্র একটি বিমূর্ত ক্লাস। কোনও ক্লাসে যে কোনও ইন্টারফেসের অংশ হতে পারে।
একাধিক inheritance বিমূর্ত ক্লাসে সমর্থিত হয় না। একটি ইন্টারফেস একাধিক উত্তরাধিকার সমর্থন করতে পারে।
টেকনিক্যালি, এটি এমন একটি শ্রেণী যা সংজ্ঞা এবং এর বাস্তবায়ন উভয়ই অন্তর্ভুক্ত বা নাও থাকতে পারে। একটি ইন্টারফেস কেবল কার্যকারিতা স্বাক্ষর করতে পারে তাই এটি মূলত একটি ফাঁকা শেল।
একটি বিমূর্ত ক্লাস সদস্য ধারণ করতে পারে। consts, সংজ্ঞায়িত পদ্ধতি, এবং পদ্ধতি স্টাব। একটি ইন্টারফেস কেবল পদ্ধতি এবং সংকীর্ণ ধারণ করতে পারে।
এটি একটি ক্লাসের মূল পরিচয় নির্ধারণ করে এবং একই ডাটা টাইপের বস্তুর বর্ণনা করতে ব্যবহৃত হয়। এটি একটি ক্লাসের পেরিফেরাল ক্ষমতা বর্ণনা করতে ব্যবহৃত হয়।
একটি সম্পূর্ণ সদস্য না হওয়া পর্যন্ত একটি বিমূর্ত শ্রেণীর সদস্য স্থায়ী হতে পারে না। একটি ইন্টারফেসের সদস্য স্ট্যাটিক হতে পারে না।
একই ধরনের এবং সাধারণ আচরণের প্রয়োগের জন্য এটি আদর্শ। ইন্টারফেস ব্যবহার করা আরও ভাল, যদি বিভিন্ন প্রয়োগ শুধুমাত্র পদ্ধতি স্বাক্ষর ভাগ করে নেয়।
এটি কন্সট্রাকটর ঘোষণা থাকতে পারে। এটি কন্সট্রাকটার ঘোষণা করতে পারে না।
একটি বিমূর্ত শ্রেণী পূর্বনির্ধারিত ক্ষেত্র এবং constants আছে। ক্ষেত্রগুলি ইন্টারফেসে সংজ্ঞায়িত করা যাবে না।
উভয় বিমূর্ত এবং অ-বিমূর্ত পদ্ধতি থাকতে পারে। এটি শুধুমাত্র বিমূর্ত পদ্ধতি থাকতে পারে
সারসংক্ষেপ একটি বিমূর্ত ক্লাস এবং একটি ইন্টারফেস মধ্যে পার্থক্য কি? এই সম্ভবত কোন প্রযুক্তিগত সাক্ষাত্কারে জিজ্ঞাসা করা সবচেয়ে সাধারণ প্রশ্ন এক। আপনি সম্ভবত কোন C # টিউটোরিয়ালের মধ্যে বিমূর্ত ক্লাস এবং ইন্টারফেস সম্পর্কে প্রচুর তথ্য খুঁজে পেতে পারেন তবে দুটি মধ্যে পার্থক্য বোঝা খুবই কঠিন অংশ। আপনি পেতে পারেন সব তথ্য একসঙ্গে এবং এখনও পেতে পারেন যথেষ্ট না ভাল, ধারণাগতভাবে উভয় প্রোগ্রামিং মধ্যে সবচেয়ে গুরুত্বপূর্ণ পদ এবং বেশ একই, তবে, তারা কার্যকারিতা পরিপ্রেক্ষিতে অনেক আলাদা। একটি বিমূর্ত ক্লাস একটি বিশেষ ধরনের শ্রেণী যা অন্য শ্রেণীর জন্য একটি বেস হিসাবে কাজ করে, অন্যদিকে, একটি ইন্টারফেস, শুধুমাত্র সদস্য ঘোষণার সাথে একটি খালি শেল।