Überschreiben des Standard-Konstruktor in Java
Ziemlich einfache Frage, aber trotzdem: gibt es einen Grund zum überschreiben der default-Konstruktor wie diese:
public SomeObject(){
}
Er ist öffentlich. Es ist keine Logik. Also, ist es notwendig? Ich habe nicht das ganze Bild zu sehen?
Schätzen alle Ihre Hilfe.
- Nicht wirklich, aber es ermöglicht für ein paar Sekunden gespeichert, in der Zukunft, wenn Sie benötigen, fügen Sie einige code, wenn Sie instanziieren des Objekts.
private SomeObject() { }
allerdings macht ein wenig mehr Sinn 🙂 -- auch in C++ ist es üblich, mit freundlicher Genehmigung umfassen die::SomeObject() { }
und::~SomeObject() { }
auch wenn Sie nicht verwendet wird.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Grund zu definieren eine leere no-arg-Konstruktor ist, wenn es auch eine nicht-Standard-Konstruktor und den no-arg-Konstruktor noch erwünscht zugänglich sein (public oder protected).
Dies ist, weil jeder [andere] Konstruktor-definition verhindert das automatische hinzufügen der Standard-no-arg-Konstruktor:
(Siehe das nächste bit in dem link, wo er spricht über die Standard-super-Konstruktor aufgerufen werden.)
Selbst wenn die no-arg-Konstruktor ist nie manuell bedient, es kann wichtig sein, für andere Dinge, z.B. Serializable:
Einzige Grund sein kann, manchmal können Sie haben, Konstruktor mit Parametern, und Sie möchten, dass die Objekterzeugung ohne die übergabe von Parametern (durch aufrufen der Standard-Konstruktor).
Wenn Sie haben Konstruktor definiert, der keine arg-Konstruktor nicht verfügbar, Sie müssen also explizit fügen Sie es Ihrer Klasse.
Es sei denn, Sie haben die Initialisierung der Logik gibt es keine Notwendigkeit zum überschreiben der default-Konstruktor.
Der genaue Grund ist, wenn Sie nicht, Sie haben problem beim erweitern von Klassen
gehen durch diese und diese zu verstehen, was ich zu sagen versuchte.
EDIT: einige der Antworten sind eigentlich falsch, weil, wie Sie sehen können, definieren die übergeordneten no-arg-Konstruktor ist obligatorisch und erweitern die Klassen, es sei denn, Sie wird explizit aufgerufen, überladenen super-Konstruktor mit args.