Junior — Middle
İki arayüzün aynı isimde metodlar içerdiği iki arayüz bildirildiğinde nasıl davranılmalı?
sobes.tech yapay zeka
AI'dan gelen yanıt
Bir sınıfta, aynı isimlere ve imzaya sahip metodlar içeren iki arayüz uygulanıyorsa:
- Metodlar aynı imzaya ve dönüş tipine sahipse, her ikisini de karşılayan tek bir metod uygulamak yeterlidir.
- Aynı isimli metodların farklı imzaları (örneğin, farklı parametreler) varsa, her iki metodun ayrı ayrı uygulanması gerekir.
- Arayüzler, aynı isimlere ve imzaya sahip metodlar içeriyor ancak varsayılan uygulamaları (default methods) farklıysa, sınıfta bu metodu açıkça geçersiz kılmak ve hangi uygulamayı kullanacağını belirtmek veya kendi uygulamanızı sağlamak gerekir.
Varsayılan metod çatışması örneği:
interface IFirst {
void Method() => Console.WriteLine("First");
}
interface ISecond {
void Method() => Console.WriteLine("Second");
}
class MyClass : IFirst, ISecond {
public void Method() {
// Açıkça uygulamayı seçiyoruz
((IFirst)this).Method();
// veya kendi uygulamamızı
Console.WriteLine("MyClass Method");
}
}
Bu nedenle, C#'ta farklı arayüzlerden gelen aynı isimli metodlar çatıştığında, sınıf bu belirsizliği açıkça çözmek zorundadır ve metodu kendisi uygulamalıdır.