Définition des signatures de constructeur dans les interfaces
En C#, les interfaces fournissent un contrat qui définit un ensemble de méthodes et de propriétés que les classes implémentant l'interface doivent adhérer à. Cependant, les interfaces ne spécifient généralement pas les détails d'implémentation, y compris les signatures des constructeurs.
Pourquoi ne pouvez-vous pas définir un constructeur dans une interface ?
L'incapacité de définir un Le constructeur dans une interface découle de la nature fondamentale des interfaces. Les interfaces sont des contrats abstraits qui n'ont pas leurs propres implémentations. Lorsqu'une classe implémente une interface, elle fournit sa propre implémentation pour les méthodes et propriétés définies dans l'interface. Les constructeurs, quant à eux, sont responsables de l'initialisation de l'état d'un objet et sont spécifiques à l'implémentation d'une classe particulière.
De ce fait, les interfaces n'ont pas leur propre implémentation et ne peuvent donc pas définir leurs propres constructeurs. Le constructeur fait partie de l'implémentation de la classe et est défini dans le cadre de la définition de la classe, et non de l'interface qu'il implémente.
Exemple
Considérez l'interface et la classe suivantes :
interface IDrawable { void Update(); void Draw(); } class MyDrawable : IDrawable { private GraphicsDeviceManager _manager; public MyDrawable(GraphicsDeviceManager manager) { _manager = manager; } public void Update() { } public void Draw() { } }
Dans cet exemple, la classe MyDrawable implémente l'interface IDrawable. Cependant, l'interface IDrawable ne définit pas de constructeur. Le constructeur est défini dans la classe MyDrawable et est responsable de l'initialisation de la variable membre GraphicsDeviceManager de l'objet.
Alternatives
Bien que les interfaces ne prennent pas en charge la définition des constructeurs, il existe autres façons d'initialiser l'état d'un objet :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!