Pourquoi faire appel à super() dans le constructeur?
Je fais face à une classe qui étend JFrame
.
Ce n'est pas mon code, et il fait un appel à super
avant qu'il ne commence la construction de l'interface graphique. Je me demande pourquoi c'est fait depuis j'ai toujours consulté les méthodes de la super-classe, sans avoir à appeler super();
- Remarque: l'Extension de
JFrame
n'est probablement pas ce que vous comptiez faire. L'extension implique une relation " est-un. Sauf si vous effectuez une nouvelle fenêtre composant, vous devriez probablement être l'extension deJComponent
.
Vous devez vous connecter pour publier un commentaire.
Il y a un appel implicite à
super()
sans arguments pour toutes les classes qui ont un parent qui est chaque classe définie par l'utilisateur en Java afin de l'appelant explicitement, c'est généralement pas nécessaire. Cependant, vous peut utiliser l'appel àsuper()
avec des arguments si le parent du constructeur de paramètres, et que vous souhaitez spécifier. En outre, si la société mère du constructeur prend des paramètres, et il n'a pas de valeur par défaut paramètre moins de constructeur, vous besoin appelersuper()
avec argument(s).Un exemple, où l'appel explicite à
super()
vous donne un peu plus de contrôle sur le titre de l'image:JVM
lui-même.Un appel à votre parent de la classe du constructeur vide
super()
est fait automatiquement si vous ne le faites pas vous-même. C'est la raison pour laquelle vous n'avez jamais eu à le faire dans votre code. Il a été fait pour vous.Lors de votre super-classe n'est pas un no-arg constructeur, le compilateur va vous obliger à appeler
super
avec les arguments appropriés. Le compilateur assurez-vous que vous instancier la classe correctement. Donc ce n'est pas quelque chose que vous avez à vous soucier de trop.Si vous appelez
super()
dans votre constructeur ou pas, cela n'affecte pas votre capacité à appeler les méthodes de votre classe parent.Comme une note de côté, certains disent qu'il est généralement préférable de faire cet appel manuellement pour des raisons de clarté.
Il appelle simplement le constructeur par défaut de la classe mère.
, Nous pouvons accéder à la super classe des éléments en utilisant la méthode super
Considérons que nous avons deux classes, la classe Parent et de l'Enfant en classe, avec les différentes implémentations de la méthode foo. Maintenant dans la classe enfant si nous voulons appeler la méthode foo de la classe parent, nous pouvons le faire en super.foo(); on peut également accéder à des éléments de parent par super() la méthode.
, Nous pouvons Accéder à la Superclasse des membres à l'aide de super()
Si votre méthode remplace l'un de ses super-classe de méthodes, vous pouvez appeler la méthode remplacée par l'utilisation du mot-clé
super
. Vous pouvez également utiliser super pour faire référence à un champ caché (bien que le masquage des champs est déconseillée). Considérez cette classe, super-classe://Ici est une sous-classe, appelée sous-classe, qui remplace
printMethod()
:Au sein de la sous-classe, le simple nom de
printMethod()
se réfère à celui déclaré dans la sous-classe, qui remplace celui de la Superclasse. Donc, pour faire référence àprintMethod()
hérité de super-classe, sous-classe doit utiliser un nom qualifié, en utilisant super comme indiqué. La compilation et de l'exécution de la sous-classe des impressions suivantes: