Sobes.tech
Junior — Middle

Python ve C# programlama dillerinde kalıtım mekanizmaları nasıl farklılık gösterir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Python ve C#'ta kalıtım mekanizmaları ortak özelliklere sahip olmakla birlikte önemli farklar da vardır:

  • Python:

    • Çoklu kalıtımı destekler: bir sınıf birden fazla temel sınıftan kalıtım alabilir.
    • Çoklu kalıtımda metod çağrı sırasını belirlemek için yöntem çözüm sırası (MRO, Method Resolution Order) kullanır.
    • Tüm sınıflar varsayılan olarak temel sınıf object'ten kalıtım alır.
    • Kalıtım dinamik olup, çalışma sırasında özellikler ve metodlar değiştirilebilir.
  • C#:

    • Sadece tekli kalıtımı destekler: bir sınıf yalnızca bir temel sınıftan kalıtım alabilir.
    • Çoklu kalıtım, arayüzler (interfaces) mekanizmasıyla gerçekleştirilir: bir sınıf birden fazla arayüzü uygulayabilir.
    • Kalıtım katı tiptedir ve statiktir.

Python'da çoklu kalıtım örneği:

class A:
    def method(self):
        print("A")

class B:
    def method(self):
        print("B")

class C(A, B):
    pass

c = C()
 c.method()  # MRO'ya göre "A" yazdırır

C#'ta bu, arayüzler aracılığıyla gerçekleştirilir:

interface IA { void Method(); }
interface IB { void Method(); }

class C : IA, IB {
    public void Method() {
        Console.WriteLine("C");
    }
}

Bu nedenle, temel fark, Python'un doğrudan çoklu sınıf kalıtımını desteklemesi, C#'ın ise yalnızca tekli kalıtımı desteklemesi ve çoklu kalıtımın arayüzler aracılığıyla sağlanmasıdır.