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.