Interface ها در سي شارپ
در پست هاي قبلي به دو سطح از Inheritance اشاره كرديم. در سطح اول يك كلاس را از يك كلاس ديگر به صورت معمولي به ارث برديم. يعني مثلا كلاس Emp را از كلاس Person به ارث برديم در حالتيكه ساختن شيء‌از هر دو آن ها كاربري و منطقي بود.
سپس يك سطح انتزاعي تر كلاس هاي abstract را بررسي كرديم. كلاس Emp را به صورت abstract تعريف كرديم و كلاس هاي MonthlyEmp و HourlyEmp را از آن به ارث برديم.

حالا می خواهیم به بالاترین سطح انتزاعی در سی شارپ یعنی Interface ها بپردازیم. در بررسی اینترفیس ها من ابتدا به تعریف آن ها اشاره می کنم. سپس روش و Syntax استفاده از آن ها و در نهایت موارد استفاده از آن را بررسی می کنم.

اينترفيس ها قرارداد هایی هستند که اعلام می کنند این نوع های داده ای دارای چه امکاناتی می باشند. اما روش پیاده سازی آن ها را اعلام نمی کنند. در واقع در اینترفیس ها شما هیچ گونه پیاده سازی ندارید و فقط اعلام می کنید که نوع شما دارای چه "متد ها" , "پراپرتی ها" , "ایندکس ها" و "رویدادهایی" است.

برای تعریف اينترفيس ها در سي شارپ باید در سطح namespace همانند یک کلاس ولی با استفاده از keyword ی به نام interface.



همانطور که در تصویر بالا مشاهده می کنین در اینترفيس ها شما فقط به تعریف ها می پردازید و اجازه ایجاد بدنه متد ها و property ها را ندارید. در تعریف interface ها قوانین زیر وجود دارند:
  • امکان استفاده از access modifier ها وجود ندارد. (در واقع تمامی اعضاء یک interface) به صورت public هستند ولی کلمه public نوشته نمی شود.
  • در اينترفيس ها Constructor نداريم.
  • تمامی Property و Method و Indexer ها به صورت abstract و بدون پیاده سازی هستند.
  • امکان استفاده از field ها وجود ندارد.
ادامه دارد ...