Sobes.tech
Junior — Middle

Comment les mécanismes d'héritage diffèrent-ils dans les langages de programmation Python et C#?

sobes.tech IA

Réponse de l'IA

En Python et C#, les mécanismes d'héritage ont des caractéristiques communes, mais aussi des différences importantes :

  • Python :

    • Supporte l'héritage multiple : une classe peut hériter de plusieurs classes de base.
    • Utilise la méthode de résolution d'ordre (MRO, Method Resolution Order) pour déterminer l'ordre d'appel des méthodes en cas d'héritage multiple.
    • Toutes les classes héritent par défaut de la classe de base object.
    • L'héritage est dynamique, il est possible de modifier les attributs et méthodes en cours d'exécution.
  • C# :

    • Supporte uniquement l'héritage simple : une classe ne peut hériter que d'une seule classe de base.
    • Pour réaliser l'héritage multiple, on utilise le mécanisme des interfaces : une classe peut implémenter plusieurs interfaces.
    • L'héritage est strictement typé et statique.

Exemple d'héritage multiple en Python :

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

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

class C(A, B):
    pass

c = C()
 c.method()  # Affichera "A" selon le MRO

En C#, cela se réalise via des interfaces :

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

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

Ainsi, la principale différence est que Python supporte l'héritage multiple de classes directement, tandis que C# ne supporte que l'héritage simple, avec l'héritage multiple via des interfaces.