2016-04-29 2 views
3

Pourquoi on jamais écrireJava: Pourquoi quelqu'un écrirait-il jamais super() quand c'est la valeur par défaut?

super(); //(parameterless) 

dans un constructeur de sous-classe, car si cela est absent, la valeur par défaut, le constructeur est appelé superclasse parameterless de toute façon?

+2

Il n'est pas pratique d'appeler le constructeur 'super()'. Quand je l'utilise, je le fais pour me rappeler que le super-constructeur est appelé donc je n'oublierai pas ça (pour le débogage etc ...) – ParkerHalo

+0

@ParkerHalo que _is_ est une utilisation pratique :) – davmac

Répondre

2

je produis habituellement les constructeurs utilisant IDE (par exemple Eclipse), et il en fait des lieux qui appellent, de sorte que pourrait être l'un des cas

+0

Oui c'est typiquement un code style d'éclipse (de quelques éclipses). –

2

Le constructeur super() parameterless est juste une partie de la liste des super-constructeurs avec des paramètres différents, vous pouvez appeler

super(int, String) 
super(int) 
super()   // for completeness 

Même si certaines équipes peuvent nécessiter l'appel pour des raisons de style, l'appel de la non-args super() ne parvient pas à rien et est donc code ballonnement simple. (Certaines personnes l'aiment comme ça.)

0

Pour rendre explicite le flux de contrôle (sinon implicite). Ce code sert à rappeler que le constructeur par défaut de la super-classe sera en fait appelé au début du constructeur de la classe dérivée. Ceux qui lisent le code auront un marqueur visuel qui leur rappelle de vérifier également le constructeur de la superclasse quand ils veulent savoir ce qui se passe quand une instance est construite.