2016-04-29 4 views
3

Warum würde jemand jemalsJava: Warum sollte jemand jemals super() schreiben, wenn dies der Standard ist?

super(); //(parameterless) 

innerhalb einer Unterklasse Konstruktor schreiben, denn wenn diese nicht vorhanden ist, wird der Standard, parameterlos Oberklassenkonstruktors sowieso genannt?

+2

Es gibt keine praktische Verwendung beim Aufrufen des 'super()' -Konstruktors. Wenn ich es benutze, mache ich es, um mich daran zu erinnern, dass der Super-Konstruktor aufgerufen wird, also werde ich das nicht vergessen (zum Debuggen usw.) – ParkerHalo

+0

@ParkerHalo, das _ist_ eine praktische Verwendung :) – davmac

Antwort

2

ich in der Regel Konstrukteure erzeugen IDE (zB Eclipse), und es die tatsächlich Orte nennen, so dass einer der Fälle könnte

+0

Ja, es ist normalerweise ein Code Styling von Eclipse (von einigen Finsternissen). –

2

Der parameterlos super() Konstruktor ist nur ein Teil der Liste der Super-Konstrukteure mit verschiedenen Parametern können Sie

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

Selbst nennen, obwohl einige Teams um den Anruf aufgrund Styling Gründe erfordern kann, der Ruf des No-args super() erreichen nichts und ist somit einfacher Code-aufblähen. (Einige Leute mögen es so.)

0

Um den (sonst impliziten) Kontrollfluss explizit zu machen.

Dieser Code dient als Erinnerung, dass der Superklassen-Standardkonstruktor tatsächlich am Anfang des Konstruktors der abgeleiteten Klasse aufgerufen wird. Diejenigen, die den Code lesen, haben eine visuelle Markierung, die sie daran erinnert, auch den Superklassenkonstruktor zu überprüfen, wenn sie wissen wollen, was passiert, wenn eine Instanz konstruiert wird.

Verwandte Themen