java la force d'une extension de la classe
En Java, je peux en quelque sorte la force d'une classe qui étend une classe abstraite pour mettre en œuvre son constructeur avec un Objet en tant que paramètre?
Quelque chose comme
public abstract class Points {
//add some abstract method to force constructor to have object.
}
public class ExtendPoints extends Points {
/**
* I want the abstract class to force this implementation to have
* a constructor with an object in it?
* @param o
*/
public ExtendPoints(Object o){
}
}
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un constructeur avec un paramètre dans votre classe abstraite (il est protégé si vous souhaitez dis-autoriser l'accès anonyme sous-classes).
Faisant cela, vous forcez la mise en œuvre de la classe d'avoir un constructeur explicite, comme il doit appeler le super constructeur avec un paramètre.
Cependant, vous ne pouvez pas forcer la classe prioritaire d'avoir un constructeur avec paramètres. Il peut toujours faux le paramètre comme ceci:
Comme dit par d'autres avant, la signatue de Constructeurs cvannot être appliquées, mais vous pouvez appliquer un ensemble particulier d'arguments à l'aide de la AbstractFactory motif de la place. Ensuite, vous pouvez définir la création des méthodes de votre usine interface d'avoir une signature.
Pas les Constructeurs ne sont pas héritées, de sorte que chaque Classe doit fournir ses propres, à moins que vous ne spécifiez pas d'un constructeur et d'obtenir la valeur par défaut pas de args constructeur.
Probablement là, il n'est pas possible au moment de la compilation, mais vous pouvez utiliser la réflexion pour vérifier au moment de l'exécution si l'constructeur a déclaré:
Si vous ajoutez un
public Points(Object o) {}
constructeur de Points, vous avez la force d'une sous-classe des constructeurs d'appeler cette super constructeur. Cependant, je ne pense pas qu'il n'y a aucun moyen de s'assurer que les sous-classes d'utiliser exactement la signature du constructeur.MODIFIER
Eh bien, non, il n'est pas possible de forcer la mise en œuvre d'un constructeur avec argument.