Sobes.tech
Junior

Projelerinizde soyut sınıflar kullandınız mı?

sobes.tech yapay zeka

AI'dan gelen yanıt

Evet, kullandım. Soyut sınıflar, ortak metodlar ve özelliklerle temel yapılar oluşturmak için kullanılırdı ve daha sonra belirli sınıflar tarafından miras alınırdı.

// Soyut sınıfın bildirimi
public abstract class Shape
{
    // Miras alan sınıflarda uygulanması gereken soyut metod
    public abstract double GetArea();

    // Varsayılan uygulaması olan sanal metod, üzerine yazılabilir
    public virtual void Draw()
    {
        Console.WriteLine("Şekil çiziliyor.");
    }
}

// Shape'ten türeyen somut sınıf
public class Circle : Shape
{
    public double Radius { get; set; }

    public Circle(double radius)
    {
        Radius = radius;
    }

    // Soyut metodun uygulaması
    public override double GetArea()
    {
        return Math.PI * Radius * Radius;
    }

    // Sanal metodun üzerine yazılması
    public override void Draw()
    {
        Console.WriteLine($"Yarıçapı {Radius} olan bir daire çiziliyor.");
    }
}

Kullanım senaryoları:

  • Genel bir sözleşme tanımlama: Soyut sınıflar, tüm türeyen sınıflarda bulunması gereken metodlar ve özellikler setini belirlemeye olanak tanır.
  • Kısmi uygulama: Temel sınıfta fonksiyonelliğin kısmi uygulamasını sağlayarak, kalıtımda kod tekrarını önler.
  • Tasarım kalıbı: Sıkça "Şablon Metodu" gibi kalıpların uygulanmasında kullanılır.

Arayüzlerle farkları:

Özellik Soyut sınıf Arayüz
Miras Çoklu kalıtım yasaktır Çoklu uygulama izinlidir
Uygulama Metodların uygulamasını içerebilir C# 8.0'den önce - sadece bildirimler, sonrası - varsayılan uygulama
Üyeler Alanlar, yapıcılar, sanal/soyut/normal metodlar içerebilir C# 8.0 öncesi - sadece metodlar ve özellikler, sonrası - statik üyeler ve varsayılan uygulamalar
Durum Durum tutabilir (alanlar aracılığıyla) Durum tutamaz