Les deux autres réponses sont correctes (pas de constructeur ou constructeur privé), mais il y a quelques détails supplémentaires qui peuvent vous intéresser :
- Voici un exemple d'aucun constructeur. Il est à noter que
A
n'a tout simplement pas de constructeur, et B
n'appelle simplement pas super()
. À part cela, tout le reste fonctionne comme prévu.
- Voici un exemple d'un constructeur privé. Vous ne pouvez toujours pas instancier un
new A()
mais vous devez quand même appeler super()
de B
Le constructeur de l'entreprise.
Technicité :
- L'utilisation de certaines fonctionnalités (comme une valeur par défaut sur une variable membre) provoquera
A
pour obtenir un constructeur implicite, automatiquement. Ne vous inquiétez pas, cela n'affecte pas la constructibilité ou le fait que vous devez ou non appeler super()
. Mais sachez qu'il est là, et si nécessaire, un implicite. super()
est ajouté à l'appel B
Le constructeur de l'entreprise. Voyez la sortie JS pour le vérifier.
- Dans tous les cas, sachez que vous pouvez toujours instancier une
A
au moment de l'exécution avec var a = Type.createInstance(A,[]);
car les contrôles de type à la compilation ne limitent pas RTTI .
Discussion connexe :
En dehors de private/no constructor, Haxe n'a pas de notion formelle de classes abstraites 1 (classes de base qui ne sont pas censées être instanciées) ou méthodes abstraites 2 (fonctions sur des classes de base abstraites sans implémentation qui doit être implémentée par une classe dérivée). Cependant, Andy Li a écrit une macro pour faire respecter certains de ces concepts si vous les utilisez. Une telle macro peut détecter les violations de ces règles et générer des erreurs de compilation.
1. À ne pas confondre avec <a href="https://haxe.org/manual/types-abstract.html" rel="nofollow noreferrer">Haxe abstrait les types </a>qui sont un sujet entièrement différent.
2. A ne pas confondre avec <strong>fonctions virtuelles </strong>qui, selon wikipedia <a href="https://en.wikipedia.org/wiki/Virtual_function" rel="nofollow noreferrer">décrit </a>comme une fonction qui <em>puede </em>(bien que les différentes docs pour les différentes langues décrivent ce terme très chargé différemment).