Junior — Middle
Hogyan különböznek az öröklési mechanizmusok a Python és a C# programozási nyelvekben?
sobes.tech MI
Válasz az MI-től
A Python és a C# öröklési mechanizmusai közös jellemzőkkel rendelkeznek, de fontos különbségek is vannak:
-
Python:
- Támogatja a több öröklést: egy osztály több alap osztályból is örökölhet.
- A módszer feloldási sorrendet (MRO, Method Resolution Order) használja a több öröklés esetén a módszerek hívási sorrendjének meghatározására.
- Minden osztály alapértelmezés szerint az
objectosztályból örököl. - Az öröklés dinamikus, attribútumokat és módszereket lehet módosítani futás közben.
-
C#:
- Csak egyszerű öröklést támogat: egy osztály csak egy alap osztályból örökölhet.
- A több öröklést az interfészek mechanizmusa valósítja meg: egy osztály több interfészt is implementálhat.
- Az öröklés szigorúan típusos és statikus.
Példa a Python több öröklésre:
class A:
def method(self):
print("A")
class B:
def method(self):
print("B")
class C(A, B):
pass
c = C()
c.method() # A MRO szerint "A"-t ír ki
A C#-ban ez interfészeken keresztül valósul meg:
interface IA { void Method(); }
interface IB { void Method(); }
class C : IA, IB {
public void Method() {
Console.WriteLine("C");
}
}
Tehát a fő különbség az, hogy a Python közvetlenül támogatja a több osztályból való öröklést, míg a C# csak egyszerű öröklést támogat, de több interfész implementálásával lehetőséget ad a több öröklésre.