Unterschied zwischen einem Konstruktor und einem null-parameter-Konstruktor (in Java)
Kann mir jemand sagen was der Unterschied (begrifflich) zwischen einem Konstruktor und einem null-parameter-Konstruktor ist? Beispiel:
Wie würde die Umsetzung beeinflussen ein Programm
public Person() {
firstName = "UNKNOWN";
lastName = "UNKNOWN";
gender = '?';
retired = false;
age = 0;
address = null;
}
im Vergleich zu sagen...:
public Person(String f, String l, int a, char g) {
firstName = f;
lastName = l;
age = a;
gender = g;
retired = false;
address = null;
}
edit: bitte ignorieren Sie die Anzahl der Parameter...
Was ist Ihr Verständnis über einen Konstruktor, im Allgemeinen?
InformationsquelleAutor choloboy7 | 2013-03-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie nicht definieren Sie einen Konstruktor für eine Klasse, die einen parameterlosen default-Konstruktor wird automatisch erstellt, indem der compiler. Der default-Konstruktor ruft die default-parent-Konstruktor (super()) und initialisiert alle Instanzvariablen default-Wert (null für numerische Typen, die null für " object-Referenzen, und false für Boolesche Werte).
Default-Konstruktor wird nur angelegt, wenn es gibt keine Konstruktoren. Wenn Sie die Definition einer Konstruktor für Ihre Klasse keinen default-Konstruktor wird automatisch erstellt.
Keinen Unterschied.
InformationsquelleAutor lichengwu
Auch, ein guter Stil ist, haben nur einen Konstruktor, der macht die eigentliche Arbeit, auch wenn Sie mehr als einen Konstruktor. Der Begriff bezeichnet Konstruktor kommt von Objective-C, aber es ist immer noch eine gute Idee. Angenommen, Sie schreiben:
Dann schreiben Sie Ihre no-argument-Konstruktor als
Wenn die erste Anweisung eines Konstruktors ist
this(...)
, dann wird der Konstruktor aufrufen einer der anderen Konstruktoren der Klasse. Ebenso, wenn die erste Anweisung eines Konstruktors istsuper(...)
, dann ist der Aufruf eines Konstruktors der übergeordneten Klasse. Wenn man das nicht schafft, alssuper()
angenommen.Dann, da
retired
undaddress
ist das gleiche in beiden Konstruktoren initialisieren Sie Sie in Ihre Erklärungen:Und dann, da
false
undnull
sind die default-Werte für die Instanz-Variablen-Initialisierung, ersetzen Sie diese zwei Zeilen mit:Später können Sie hinzufügen, Fehlerüberprüfung. Zum Beispiel, die Menschen nicht haben negative Alters, so das einfügen der Anweisung
Beginn der benannten Konstruktor sinnvoll wäre. Auf diese Weise müssen Sie das nur einmal.
Wenn Sie lernen, über die Java-Enumerationen, können Sie dann Ihr Geschlecht Variablen präziser zu schreiben:
und mit
Sex
stattchar
für Ihregender
variable.InformationsquelleAutor Eric Jablow
Einem null-Parameter-Konstruktor wird automatisch erzeugt, wenn es keine anderen Konstruktoren definiert.
Konstruktoren mit Parameter für eine benutzerdefinierte Initialisierung von Objekten.
InformationsquelleAutor Pochemuchkin
Für den ersten Konstruktor wird jedes mal, wenn Sie wollen, instanziieren Sie ein
Person
, es startet immer mit der definierten Werte in den Konstruktor. Verwenden Sie Set-Methoden zu ändern.Für die zweite Konstruktor wird jedes mal, wenn Sie wollen, instanziieren Sie ein
Person
Sie müssen durch die entsprechenden Parameter. Es bedeutet, dass Sie können erstellen Sie Ihre Objekte ohne die Verwendung einer Set um den Wert zu ändern später.InformationsquelleAutor Makoto
InformationsquelleAutor Henry Leu
Einen Konstruktor beim instanziieren eines Objekts. Ein null-parameter (oder "no-arg") - Konstruktor erfordert keine Argumente. Eine Klasse kann mehrere Konstruktoren mit jeweils unterschiedlichen Argumenten.
Konstruktoren ohne Argumente sind besonders hilfreich für Werkzeuge mit Reflexion zu füllen die Eigenschaften eines Objekts. Die Standard no-arg-Konstruktor wird verwendet, um zu konstruieren den Gegenstand, dann seine Eigenschaften sind bevölkert von passenden Namen, die verwendet werden in Ihren setter (aka Mutatoren).
Konstruktoren mit Argumenten sind besonders gut geeignet für die Erstellung von immutable Objekte. Das Objekt kann aufgefüllt werden, wenn er erstellt wird, und dann ist garantiert nicht ändern (vorausgesetzt, die Eigenschaften sind ähnlich unveränderlich).
InformationsquelleAutor phatfingers
zunächst, wenn Sie nicht über Anweisung der Konstruktor der Klasse kann aoto erstellen Konstruktor aber dieser Konstruktor keine parameter und initialisiert alle Instanzvariablen default-Wert (null für numerische Typen, die null für " object-Referenzen, und false für booleans) wie diese:
aber Sie können dies überschreiben, Konstruktor wie diese:
und überlastung dieser Konstruktor wie diese:
InformationsquelleAutor Railre