Comment puis-je la force d'un Constructeur à être défini dans toutes les classes de ma classe abstraite

J'ai une classe abstraite Une qui définissent des méthodes abstraites. Cela signifie que, pour qu'une classe instanciable, tous la méthode abstraite doivent être mises en œuvre.

J'aimerais que tous mes sous-classes pour implémenter un constructeur avec 2 ints en tant que paramètres.

Déclarer un constructeur défaites mon but, je veux le constructeur défini dans les sous-classes et je ne sais rien à propos de la mise en œuvre. De plus je ne peut pas déclarer un constructeur comme étant abstraite;

Est-il un moyen de faire cela ?

Exemple de ce que je veux:

Permet de dire que je suis la définition de l'API d'une classe Matrix. Dans mon problème, la Matrice ne peut pas modifier leurs dimensions.

Pour une Matrice à créer, j'ai besoin de fournir sa taille.

Donc, je veux que tous mes réalisateurs de fournir le constructeur avec la taille comme un paramètre. Ce constructeur est motivée par le problème, et non pas par une mise en œuvre préoccupation. La mise en œuvre peut faire ce qu'il veut avec ces, à condition que toutes les sémantiques des méthodes sont conservés.

Disons que je veux fournir une base de mise en œuvre de la invert() méthode dans ma classe abstraite. Cette méthode permet de créer une nouvelle matrice avec this inversé dimensions. Plus précisément, comme il est défini dans la classe abstraite, il va créer une nouvelle instance de la même classe que this, à l'aide d'un constructeur qui prend deux entiers. Comme il ne sait pas à l'instance, il va utiliser la réflexion (getDefinedConstructor) et je veux un moyen de garantie que je vais le faire et que ce sera significatif pour la mise en œuvre.

Une solution Élégante peut être trouvé ici : stackoverflow.com/questions/6028526/...

OriginalL'auteur dodecaplex | 2010-07-02