একটি ইন্টারফেস একটি চুক্তি সংজ্ঞায়িত করে যা একটি শ্রেণী বা একটি কাঠামো দ্বারা বাস্তবায়িত হবে। এটিতে পদ্ধতি, বৈশিষ্ট্য, ঘটনা এবং সূচক থাকতে পারে। একটি ইন্টারফেস একটি ক্লাসের অনুরূপ তবে এটি কোনো ডেটা ধারণ করে না এবং এটি যে আচরণ করতে পারে তা শুধুমাত্র নির্দিষ্ট করে (বা আরও সঠিকভাবে, যে শ্রেণীটি এটি প্রয়োগ করে তা করতে পারে)।
একটি ক্লাস এক বা একাধিক ইন্টারফেস বাস্তবায়ন করতে পারে। একটি ইন্টারফেস সদস্য বাস্তবায়ন করার জন্য, ক্লাসে ইন্টারফেস সদস্যের মতো একই পদ্ধতির সংজ্ঞা সহ একজন পাবলিক সদস্য থাকা উচিত, যেমন একই নাম এবং স্বাক্ষর।
উদাহরণ স্বরূপ, IComparer হল System.Collections নামস্থানে সংজ্ঞায়িত একটি ইন্টারফেস যা দুটি বস্তুর তুলনা করে এমন একটি পদ্ধতির জন্য চুক্তিকে সংজ্ঞায়িত করে। কার ক্লাস IComparer ইন্টারফেস প্রয়োগ করে
পাবলিক ইন্টারফেস IDriver{ void Drive();} পাবলিক ক্লাস কার :IDriver{ পাবলিক স্ট্রিং নাম { পান; সেট } পাবলিক int গতি { পেতে; সেট } সর্বজনীন অকার্যকর ড্রাইভ(){ কনসোল.WriteLine($"{Name}:{স্পীড}"); }}
একটি ইন্টারফেসের সমস্ত সদস্য অন্তর্নিহিতভাবে বিমূর্ত এবং কোন বাস্তবায়ন বিবরণ নেই। সমস্ত ইন্টারফেস সদস্য সর্বজনীন। আপনি একটি ইন্টারফেস সদস্যের সাথে একটি অ্যাক্সেস মডিফায়ার ব্যবহার করতে পারবেন না৷ একটি ইন্টারফেস বাস্তবায়নকারী শ্রেণীকে অবশ্যই সর্বজনীন পদ্ধতি প্রদান করতে হবে যা ইন্টারফেস বাস্তবায়ন করে।
একটি ইন্টারফেস অন্যান্য ইন্টারফেস প্রসারিত করতে পারে, উদাহরণস্বরূপ −
পাবলিক ইন্টারফেস IPerformer { void Perform(); }পাবলিক ইন্টারফেস ISinger :IPerformer{ void Sing();}
ইন্টারফেস আপনাকে একটি ক্লাসে একাধিক উত্স থেকে আচরণ অন্তর্ভুক্ত করার অনুমতি দেয়। যেহেতু C# C++ এর মত একাধিক উত্তরাধিকারকে অনুমতি দেয় না, তাই ইন্টারফেস হল C# এ একাধিক অর্জনের এক উপায়।
ইন্টারফেসের একটি অপূর্ণতা হল যে এগুলি ক্লাসের তুলনায় কম নমনীয় হয় যখন আপনি এপিআইগুলি প্রকাশ করতে ব্যবহার করেন। আপনি যখন একটি ইন্টারফেসের চুক্তি পরিবর্তন করেন, তখন সেই ইন্টারফেসটি বাস্তবায়নকারী সমস্ত শ্রেণীগুলিকে বিরতি দেয় এবং ইন্টারফেসটি বাস্তবায়নের জন্য আপডেট করতে হবে৷
উদাহরণ
<প্রে>ব্যবহার করে সিস্টেম;ক্লাস প্রোগ্রাম{স্ট্যাটিক ভ্যাইড মেইন(){var carOne =নতুন গাড়ি { নাম ="হোন্ডা", গতি =100}; var carTwo =নতুন গাড়ি { নাম ="টয়োটা", গতি =70}; carOne.Drive(); carTwo.Drive(); }}পাবলিক ইন্টারফেস IDriver{ void Drive();} পাবলিক ক্লাস কার :IDriver{ পাবলিক স্ট্রিং নাম { get; সেট } পাবলিক int গতি { পেতে; সেট } সর্বজনীন অকার্যকর ড্রাইভ(){ Console.WriteLine($"{Name}:{Speed}"); }}আউটপুট
Honda:100Toyota:70