Pourquoi les constructeurs ne peuvent-ils pas être finaux, statiques ou abstraits en Java ?
Par exemple, pouvez-vous m'expliquer pourquoi ceci n'est pas valable ?
public class K {
abstract public K() {
// ...
}
}
Pourquoi les constructeurs ne peuvent-ils pas être finaux, statiques ou abstraits en Java ?
Par exemple, pouvez-vous m'expliquer pourquoi ceci n'est pas valable ?
public class K {
abstract public K() {
// ...
}
}
Non Les constructeurs ne peuvent JAMAIS être déclarés comme finaux. Votre compilateur donnera toujours une erreur du type "modificateur final non autorisé". Final, lorsqu'il est appliqué à des méthodes, signifie que la méthode ne peut pas être surchargée dans une sous-classe. Les constructeurs ne sont PAS des méthodes ordinaires. (des règles différentes s'appliquent) De plus, les constructeurs ne sont JAMAIS hérités. Il n'y a donc aucun sens à les déclarer finales.
JLS section 8 mentionne ceci.
Les constructeurs (§8.8) sont similaires aux méthodes mais ne peut être invoqué directement par un appel de méthode ; ils sont utilisés pour initialiser les nouvelles de classe. Comme les méthodes, ils peuvent être surchargés (§8.8.8).
Mais les constructeurs ne sont pas des méthodes normales. Ils ne peuvent pas être comparés comme tels.
Pourquoi le constructeur ne peut pas être statique et final sont bien définis dans les réponses ci-dessus.
Abstrait : "Abstrait" signifie qu'il n'y a pas d'implémentation. et il ne peut être implémenté que par héritage. Ainsi, lorsque nous étendons une classe, tous les membres de la classe mère sont hérités dans la sous-classe (classe enfant), sauf le "Constructeur". Donc, supposons que vous parveniez à déclarer le constructeur "abstrait", comment pouvez-vous donner sa mise en œuvre dans la sous-classe, si le constructeur n'est pas hérité dans la classe enfant ?
c'est pourquoi le constructeur ne peut pas être abstrait.
Voyons d'abord final public K(){
*au-dessus du modificateur final est restrictif parce que si c'est final alors il y a une situation où dans une autre classe ou dans la même classe seulement on va l'écraser donc ça ne va pas arriver ici proximately not final par exemple :
we want public void(int i,String name){
//this code not allowed
let static,, static c'est tout au niveau de la classe mais nous créons le constructeur basé sur l'objet en utilisant le mot clé 'new' so,,,,,, thatsall
abstract itz worst about here not at 'cause not have any abstract method or any declared method
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Considérer ce que chacun de ces mots-clés fait pour les autres méthodes. Parfois, cela n'a aucun sens dans le contexte d'un constructeur, d'autres fois, c'est déjà implicite.
4 votes
Pourquoi voulez-vous un constructeur statique ? Cette question semble être un problème de devoir.