Junior — Middle
Cum diferă mecanismele de moștenire în limbajele de programare Python și C#?
sobes.tech AI
Răspuns de la AI
În Python și C# mecanismele de moștenire au caracteristici comune, dar și diferențe importante:
-
Python:
- Suportă moștenirea multiplă: o clasă poate moșteni de la mai multe clase de bază.
- Utilizează metoda de rezolvare a ordinii (MRO, Method Resolution Order) pentru a determina ordinea de apelare a metodelor în cazul moștenirii multiple.
- Toate clasele moștenesc implicit de la clasa de bază
object. - Moștenirea este dinamică, se pot modifica atributele și metodele în timpul execuției.
-
C#:
- Suportă doar moștenirea simplă: o clasă poate moșteni doar de la o singură clasă de bază.
- Pentru implementarea moștenirii multiple, se folosește mecanismul interfețelor: o clasă poate implementa mai multe interfețe.
- Moștenirea este strict tipizată și statică.
Exemplu de moștenire multiplă în Python:
class A:
def method(self):
print("A")
class B:
def method(self):
print("B")
class C(A, B):
pass
c = C()
c.method() # Va afișa "A" conform MRO
În C#, acest lucru se realizează prin interfețe:
interface IA { void Method(); }
interface IB { void Method(); }
class C : IA, IB {
public void Method() {
Console.WriteLine("C");
}
}
Prin urmare, diferența principală este că Python suportă moștenirea multiplă a claselor direct, în timp ce C# suportă doar moștenirea simplă, cu moștenire multiplă prin interfețe.