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.