Sobes.tech
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.