Est-il possible d'appeler le constructeur de la classe enfant avant le constructeur de la classe parent? Quelqu'un a dit que c'est effectivement possible avec l'utilisation d'une méthode virtuelle, mais je ne peux pas trouver un moyen de le faire.Appel du constructeur de classe enfant avant le constructeur parent
Répondre
En IL, cela est possible. En C#: non.
Vous pouvez utiliser virtual
pour exécuter une méthode dans un type avant le cteur de ce type, mais il est découragé et risqué. Mais:
class Foo {
public Foo() {
Console.WriteLine("Foo ctor");
SomeMethod(); // BAD IDEA (calling a virtual method in a ctor)
}
protected virtual void SomeMethod() {}
}
class Bar : Foo {
protected override void SomeMethod() {
Console.WriteLine("SomeMethod in Bar");
}
public Bar() : base() { /* only to show call order */
Console.WriteLine("Bar ctor");
}
}
Il est une mauvaise idée parce que vous ne pouvez pas garantir que les sous-classes sont prêtes pour la méthode d'appel.
Qu'est-ce que vous essayez d'accomplir? Peut-être pourriez-vous avoir une méthode abstraite appelée de la classe de base ctor?
Le fait que vous sentez que vous avez besoin de faire cela indique à mon avis qu'il y a un défaut dans votre conception ou dans votre façon de penser. Je suggère d'examiner attentivement vos motifs pour essayer de le faire. – NeilDurant
Bon, c'est pourquoi je demande quel est le but ici. –
- 1. Création automatique du constructeur, selon la classe parent constructeur (C++)
- 2. PHP: appel du constructeur enfant de la méthode statique dans le parent
- 3. appel constructeur d'une autre classe
- 4. Créer un objet enfant dans le constructeur parent
- 5. Appel du constructeur par défaut à partir du constructeur paramétré
- 6. Puis-je forcer une classe enfant à utiliser le constructeur du parent?
- 7. appel constructeur de la classe de base
- 8. Appel du constructeur surchargé d'une classe de base virtuelle
- 9. Dans .NET, un constructeur 'class parent' appelle-t-il le constructeur de sa classe enfant en premier?
- 10. Appel de constructeur ambigu
- 11. Le constructeur de Superclass s'exécute-t-il dans le constructeur enfant en PHP?
- 12. Appel d'un constructeur
- 13. constructeur de classe
- 14. Meilleure pratique: Ajouter un noeud enfant à un parent dans le constructeur enfant ou non?
- 15. Obtenir le constructeur de classe
- 16. Remplacer le constructeur de parent d'un parent en PHP
- 17. Setter est appelé avant le constructeur
- 18. Appel d'un autre constructeur à partir d'un constructeur en PHP
- 19. Appel Constructor d'un autre constructeur
- 20. Appel du constructeur des enfants inconnus
- 21. Spécialisation du constructeur en python
- 22. Python et appelant constructeur de la classe parent
- 23. Constructeur pour la classe
- 24. Classe Constructeur/Setter
- 25. C#: appel d'une méthode virtuelle à partir du constructeur; Conseil?
- 26. Classe abstraite et constructeur
- 27. Question sur le constructeur de classe Java
- 28. Constructeur de classe dans le modèle
- 29. Printemps Appelle le constructeur d'objet avant de définir les propriétés
- 30. Résumé Constructeur de la classe
+1 pour déconseillé! –