Middle
Soyut sınıflar zaten varsa, arayüzler ne işe yarar?
sobes.tech yapay zeka
AI'dan gelen yanıt
- Çoklu kalıtım. Bir sınıf birkaç arayüzü uygulayabilir, ancak yalnızca bir sınıftan kalıtım alabilir (soyutlar dahil).
interface IDrivable {} interface IFlyable {} class Car : IDrivable {} // Yalnızca bir sınıftan kalıtım alır (nesne varsayılan) class FlyingCar : IDrivable, IFlyable {} // Birden fazla arayüz uygular - Uygulaması olmayan sözleşme. Arayüzler yalnızca sözleşmeyi tanımlar (metotlar, özellikler, olaylar, indeksleyiciler) ve herhangi bir uygulama içermez. Soyut sınıflar kısmen uygulanmış işlevsellik ve alanlar içerebilir.
interface IShape { double GetArea(); // Sadece bildirim } abstract class Shape { public abstract double GetArea(); // Bildirim public string Color { get; set; } // Özelliğin uygulanması public void DisplayColor() { Console.WriteLine($"Renk: {Color}"); // Uygulanan metod } } - Gevşek bağlılık (loose coupling). Arayüzler, bileşenler arasında gevşek bağlılığı teşvik eder, çünkü kod sınıfın somut uygulamasına değil, sözleşmeye bağlıdır. Bu, bir uygulamanın diğerinin yerine kolayca geçmesini sağlar.
- Rollerin ayrılması. Arayüzler, sınıfın sahip olması gereken net roller veya yetenekleri tanımlamaya olanak tanır, ana tür veya kalıtım hiyerarşisinden bağımsızdır.
- Test etme. Birim testleri için mock ve stub'lar genellikle arayüzler temelinde oluşturulur, çünkü soyut sınıflar bağımlılıklara veya karmaşık dahili mantığa sahip olabilir.
Özetle: arayüzler, sözleşmeleri tanımlamak ve tek kalıtım sınıfı sınırlamaları olmadan çok biçimlilik (polymorphism) sağlamak için esnek bir mekanizma sunar, oysa soyut sınıflar kısmi uygulama ve temel işlevsellik sağlamak için tasarlanmıştır ve türetilmiş sınıflar tarafından tamamlanır.