Middle
Hangi durumlarda arayüz kullanılmalı ve hangi durumlarda soyut sınıf?
sobes.tech yapay zeka
AI'dan gelen yanıt
İşlevsellik sözleşmesini tanımlamak için arayüzleri kullanın; bu, sınıfların uygulayabileceği anlamına gelir. Bu, çok biçimlilik sağlar ve sınıflar arasındaki bağlılığı azaltır. Bir sınıf birden fazla arayüze sahip olabilir, ancak yalnızca bir temel sınıf olabilir.
Ortak işlevselliğin bir kısmını uyguladığınızda ve türetilmiş sınıflar için temel bir yapı sağlamak istediğinizde soyut sınıfları kullanın. Soyut sınıflar, soyut ve normal yöntemler ile alanlar içerebilir. "İşte" kalıtımının gerektiği durumlar için uygundur.
| Özellik | Arayüz | Soyut Sınıf |
|---|---|---|
| Çoklu kalıtım | Evet | Hayır |
| Uygulama | Hayır ( .NET 8'e kadar varsayılan arayüz yöntemleri ile) | Evet, kısmi veya tam |
| Alanlar | Hayır | Evet |
| Yapıcılar | Hayır | Evet |
| İlişki türü | "yapabilir" ("has-a") | "dır" ("is-a") |
Arayüz kullanımına örnek:
// Uçabilen nesneler için sözleşmeyi tanımlıyoruz
public interface IFlyable
{
void Fly();
}
// Uçak sınıfı, IFlyable arayüzünü uygular
public class Airplane : IFlyable
{
public void Fly()
{
// Uçağın uçuşu uygulaması
Console.WriteLine("Uçak uçuyor");
}
}
// Kuş sınıfı da IFlyable arayüzünü uygular
public class Bird : IFlyable
{
public void Fly()
{
// Kuşun uçuşu uygulaması
Console.WriteLine("Kuş uçuyor");
}
}
Soyut sınıf kullanımına örnek:
// Ortak solunum uygulaması olan soyut sınıf Animal
public abstract class Animal
{
public void Breathe()
{
Console.WriteLine("Hayvan nefes alır");
}
// Alt sınıflar tarafından uygulanması gereken soyut yöntem
public abstract void MakeSound();
}
// Animal'den türeyen somut köpek sınıfı
public class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("Hav!" );
}
}
// Animal'den türeyen somut kedi sınıfı
public class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("Miyav!");
}
}