Interface nədir ?
Interface nədir ?
Dostlar bu məqaləmdə İnterface nədir c#-da hansı məqsədlə istifadə olunur və abstract class-dan fərqləri haqqında məlumat verəcəyəm.
İnterface bir proyektdə bir və daha çox yerdə istifadə olunan metodları saxlamaq və daha rahat formada istifadə etmək üçün istifadə olunur. İnterface içində kod yazılmır sadəcə yön verir sinifə (class) nə edəcəyini göstərir.
İnterface-da yalnız metodun adını və ala biləcəyi parametrləri təyin edirik. İnterface üstünlüklərində biridə sinifə yalnız bir əsas sinif tətbiq etmək olduğu halda, bir sinifə bir neçə interface tətbiq edilə bilməsidir. İnterface-lər adətən I hərfi ilə başlayır ancaq bu məcburi deyil. Siniflərə bir neçə interface tətbiq edilən zaman vergül ilə ayıraraq yazmaq lazımdır. İnterface başlamadan əvvəl biz abstract sinifinə baxmağımızda fayda var.
İnterface özəllikləri:
1. Bütün üzvləri abstract olmaq məcburiyyətindədir.(Bizim təyin etməyimizə ehtiyac yoxdur susmaya görə abstract-dir)
2. Tətbiq olunduğu sinif, o interfacein bütün üzvlərini overwrite etməsi məcburidir.
3. Metodlara access modifier (icazə modifikatoru) yaza bilmərik. Metodlar defolt olaraq public-tir.
İndi yuxarıda qeyd etdiklərimizi sadə bir nümünə üzərində yoxlayaq.
Tutaq ki, bizim Ayaqqabı və Texnika adında 2 sinifimiz var.
class Ayaqqabı { } class Texnika { }
İndi isə bu siniflər üçün ödəniş növləri Nağd və Kartla adında iki sinif yaradaq. Bu sinifləri abstract olaraq yaratmalıyıq çünkü məqsədimiz yuxarıda təyin etdiyimiz siniflərə baza sinif (base class) olacaqlar.
abstract class Nagd { public abstract OdemeNovu1(); } abstract class Kartla { public abstract OdemeNovu2(); }
Yuxarıda göstədiyimiz siniflərə Nagd və Kartla siniflərini tətbiq edək.
class Ayaqqabı:Kartla { public override void OdemeNovu2() { Console.Write('Ödəniş kartla qəbul edilir'); } } class Texnika:Nagd { public override void OdemeNovu1() { Console.Write('Ödəniş nagd qəbul edilir'); } }
Indi ola bilər ki, bizim elə satışımız olsun ki orada həm Nağd həmdə Kartla ödəniş qəbul edilsin. Bir sinifə yalnız bir baza sinif tətbiq edilməyə icazə verildiyi üçün bu zaman bizim köməyimizə interface gələcək. Aksesuar adinda bir sinif yaradaq və bu sinifdə həm Nağd həmdə Kartla ödəniş etmək olsun. İndi INagd və IKatla adında iki interface yaradaq.
class Aksesuar { }
public interface INagd { void OdemeNovu1(); } public interface IKartla { void OdemeNovu2(); }
Indi isə bu yaratdığımız interface yuxarıda göstərdiyimiz siniflərə tətbiq edək.
class Ayaqqabı:IKartla { public void OdemeNovu2() { Console.Write('Ödəniş kartla qəbul edilir'); } } class Texnika:INagd { public void OdemeNovu1() { Console.Write('Ödəniş nagd qəbul edilir'); } } class Aksesuar:IKartla,INagd { public void OdemeNovu1() { Console.Write('Ödəniş nagd qəbul edilir'); } public void OdemeNovu2() { Console.Write('Ödəniş kartla qəbul edilir'); } }
Yuxarıda göstərdiyimiz problemin aradan qalxdığını görmüş oluruq. Artıq burdanda göründüyü kimi Aksesuar sinifinə həm Kartla həm Nağd ödənişi istifadə etmək olar.
İnanıram faydalı olacaq. Oxuduğunuz üçün təşəkkürlər.
Hörmətlə,
Elvin Yusifli
Şərhlər ( 1 )
Sadə dildə, gözəl şəkildə izah. Əllərinizə sağlıq