Implicit vs Explicit Interface Implementation: Ne Zaman Kullanılır
# Implicit vs Explicit Interface Implementation: Ne Zaman Kullanılır
Bir interface uyguladığında iki yol var: implicit (örtülü) ve explicit (açık). Fark basit görünse de, hangisini kullanacağın projenin ihtiyacına göre değişir.
Implicit, interface üyelerini sınıfın normal üyeleri gibi yazarsın. Dışarıdan doğrudan erişebilirsin.
1public interface IKisi2{3void Selamla();4string Ad { get; set; }5}67public class Insan: IKisi8{9public string Ad { get; set; }1011public void Selamla()12{13Console.WriteLine($"Merhaba, ben {Ad}");14}15}1617// Kullanım18Insan insan = new Insan { Ad = "Ahmet" };19insan.Selamla(); // Doğrudan çalışır20insan.Ad = "Mehmet";Çıktı:
1Merhaba, ben AhmetImplicit kullan eğer:
- Metodun sınıfın temel işleviyse
- Dışarıdan sık erişilecekse
- Basit ve okunabilir kod istiyorsan
Explicit'te metod yalnızca interface üzerinden erişilebilir. Sınıf örneğinden direkt çağıramazsın.
1public interface IKisi2{3void Selamla();4}56public interface IIşçi7{8void Selamla(); // Aynı isimde metod9}1011public class Insan: IKisi, IIşçi12{13void IKisi.Selamla()14{15Console.WriteLine("Kişi olarak selamlaşıyorum");16}1718void IIşçi.Selamla()19{20Console.WriteLine("İşçi olarak selamlaşıyorum");21}22}2324// Kullanım25Insan insan = new Insan();26// insan.Selamla(); // HATA! Doğrudan erişilemez2728IKisi kisi = insan;29kisi.Selamla(); // Çalışır3031IIşçi işçi = insan;32işçi.Selamla(); // Farklı çıktıÇıktı:
1Kişi olarak selamlaşıyorum2İşçi olarak selamlaşıyorumExplicit kullan eğer:
- Aynı isimde iki interface metodu varsa (çakışma)
- Metodun sadece interface aracılığıyla erişilmesini istiyorsan
- İç işleri gizlemek istiyorsan
Çoğu zaman implicit tercih et. Daha okunabilir ve kullanışlı. Explicit sadece zorunlu olduğunda, yani:
- Aynı metod adı iki interface'de varsa
- Metodun gizli kalması gerekiyorsa
| Seçenek | Erişim | Kullanım Alanı |
|---------|--------|----------------|
| Implicit | Doğrudan | Normal, sık kullanılan metodlar |
| Explicit | Interface üzerinden | Çakışma veya gizleme gerekiyorsa |
Doğru seçim yaparak kodunu temiz ve anlaşılır tut.
0 yorum