Setter Methoden oder Konstruktoren
so weit ich gesehen haben, zwei Ansätze der Einstellung den Wert einer variable in Java. Manchmal wird ein Konstruktor mit Argumenten verwendet, die anderen setter-Methoden werden verwendet, um den Wert jeder variable.
Ich weiß, dass ein Konstruktor initialisiert eine Instanz-variable innerhalb einer Klasse einmal in einer Klasse instanziiert wird mit dem Schlüsselwort "new".
Aber wenn wir Konstruktoren verwenden und Wann verwenden wir setter?
InformationsquelleAutor der Frage ssayyed | 2013-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie die Konstruktor-Ansatz, wenn Sie wollen, erstellen Sie eine neue Instanz des Objekts mit den Werten, die bereits aufgefüllt(ein gebrauchsfertiges Objekt mit Wert aufgefüllt). Auf diese Weise müssen Sie nicht explizit sitzen und rufen Sie die setter-Methoden für jedes Feld, in das Objekt zu füllen.
Legen Sie den Wert mit einem setter-Ansatz, wenn Sie wollen, ändern Sie den Wert in einem Feld, nachdem das Objekt erstellt wurde.
Zum Beispiel:-
Und wie Axel erwähnt, wenn Sie möchten, erstellen unveränderliche Objekte verwenden, können Sie die setter-Methoden-Ansatz. Ich will nicht sagen, dass alles initialisiert im Konstruktor, da verschiedene Ansätze existieren, wie lazy-evaluation, die verwendet werden können, sogar mit immutable Objekte.
InformationsquelleAutor der Antwort SudoRahul
Wenn Sie möchten, haben eine unveränderliche Klasse Konstruktor anderweitig zu verwenden setter.
InformationsquelleAutor der Antwort Evgeniy Dorofeev
Sagen, wir haben eine Klasse namens " Counter:
In der Klasse oben, wenn Sie möchten, erstellen Sie eine neue Counter-Objekt ist, verwenden Sie einen Konstruktor und legen Sie die count-variable innerhalb. etwa so:
Wenn Sie möchten, ändern Sie die count-variable während der Laufzeitverwenden Sie die setter-Methode:
InformationsquelleAutor der Antwort hmir
Ich denke, Sie fragte eine gute Frage: - Aber, wenn wir Konstruktoren verwenden und Wann verwenden wir setter?
Erste, beginnen wir mit einigen Konzepten. Ich hoffe, diese Erläuterung hilft allen, die wissen wollen, Wann Konstruktoren oder setter() und get() Methoden (Zugriffsmethoden und Mutatoren). Konstruktoren ähnlich sind Methodenes gibt jedoch einige Unterschiede zwischen Konstruktor und Methode in java:
1) Konstruktor wird verwendet, um zu initialisieren, die den Zustand eines Objekts. Methode verwendet wird, zu entlarven Verhalten eines Objekts.
2) Konstruktor muss nicht wieder geben. Methode müssen zurück geben.
3) Konstruktor aufgerufen wird, implizit. Methode aufgerufen wird, ausdrücklich.
4) Getter()oder Accessoren, sind Methoden, die den Zugriff auf ein Objekt die Instanz-Variablen. Setter()oder Mutatoren, werden die Methoden, die dem Aufrufer eine Gelegenheit, um den Wert zu aktualisieren, der eine bestimmte Instanz-variable.
Dass dies zu verdeutlichen, denken wir im Begriff der objektorientierten Programmierung (OOP), um die Anforderung zu erfüllen OOP-Prinzipien (Die Objekte-Orientierte Programmierung (OOP) ist gebaut über vier großen Prinzipien: KapselungAbstraktion der DatenPolymorphismus und Vererbung.), Get() und Setter() Methoden ist der Schlüssel, dies zu erreichen.
Hier ist eine Formel, die gehen, um Ihnen zu zeigen, was ich meine:
Wie Sie sehen können, basierend auf dieser Formel, wenn wir uns private Felder und öffentliche accesors wir durchführen Kapselung einer der 4 OOP-Prinzipien.
Hier bin ich Los, um Ihnen beiden Klassen habe ich noch kommentieren, zu versuchen, mein code selbsterklärend. Nehmen Sie diese Klassen als lab auf Methoden mit
Customer
undTestCustomer
[das mit denmain()
Methode] Klassen, kopieren Sie den code und führen Sie es selbst. Hinweis: ich verwendete zwei Konstruktoren, um zu erklären, eine Klasse mit mehreren Konstruktoren und die öffentlichesetters()
undgetters()
Methoden, um Zugriff auf private Instanz-Variablen:Hier ist der test-Klasse, die, die das
main()
- Methode und dem Aufruf einer Instanz-Methode nach der Instanziierung ein Objekt der Vorschau Klasse:InformationsquelleAutor der Antwort S. Mayol
Verwenden wir den Ansatz, je nach Szenario.
Wenn wir haben eine Menge der Werte, die während der Instanziierung Objekt der Klasse, dann in dieser Zeit werden wir nutzen Konstruktor Ansatz.
Wenn wir nicht wissen, die Menge von Werten während der Erstellung Instanz des Objekts zu dieser Zeit werden wir nutzen, setter-Ansatz.
InformationsquelleAutor der Antwort eatSleepCode
In den meisten Fällen benutze ich beide 🙂 (seit Sie 9/10 mal wieder kommen wollen, und Bearbeiten Sie etwas (und das ist nicht eine gute practive, um eine neue Instanz davon)
Ich normalerweise so etwas wie tihs
Und wenn Sie wollen, zu Bearbeiten, etwas mit ihm können Sie einfach die setter, (eine gute Sache, wenn Sie zum Beispiel speichern Sie Ihre Benutzer in einer ArrayList, dann können Sie einfach Holen Sie das Objekt aus der arraylist und setzen Sie einfach das Feld, das Sie wollen, zu Bearbeiten, anstatt ein brandneues Objekt 🙂
InformationsquelleAutor der Antwort Kasper Franz
Es hängt von der Anwendungsdomäne und Zweck der Klasse.
Java beans haben in der Regel eine nicht arg-Konstruktor und getter/setter für die entsprechenden member-Variablen. Es gibt Vorteile dieses Ansatzes als Java beans sind out of the box unterstützt in vielen frameworks wie Struts und Spring.
Einer Klasse kann auch durchzusetzen obligatorisch, Verfügbarkeit von Werten, die mit einem solchen Variablen als Parameter übergeben, um eine Basis-Konstruktor. Und nicht zwingenden Werte können eingestellt werden durch andere Konstruktoren oder setter-Methoden.
Auf der anderen Seite immutable-Klassen können Konstruktoren benötigen aber fehlen Methoden, die ändern Ihren Zustand einschließlich setter.
Insgesamt, wie Entscheidungen getroffen werden können, mit Berücksichtigung der zum gesamten design der Anwendung, frameworks1 es läuft, Vertrag durchsetzen muss, etc.
1 - Obwohl, seine empfohlen, Klasse design sollte unabhängig von frameworks. Gute frameworks wie Spring nicht die Durchsetzung solcher Anforderungen.
InformationsquelleAutor der Antwort sgp15
Im Falle der Konstruktoren, Wenn Sie die Felder aktualisieren, erstellen Sie ein neues Objekt jedes mal durch die Verwendung neue Stichwort.
Zum Beispiel, wenn Sie aktualisieren möchten, das Gehalt von Tom, den Sie schreiben müssen, diese Linie wieder mit aktuellen Gehalt, das bedeutet, dass Speicher verschwendet wird.
Im Fall von setter-Methoden können Sie einzelne Felder in original-Objekt nur.
InformationsquelleAutor der Antwort Sushil kumawat
Können Sie kombinieren die zwei aproaches. Innerhalb des Konstruktors kann man aufrufen der setter von instace Variablen. So etwas wie:
InformationsquelleAutor der Antwort Cold
In einfachen Worten:
Verwenden Konstruktor wenn Sie denken, Objekt-Initialisierung ist zwingend vor der Verwendung des Objekts.
Verwenden setter - Methode bei der Initialisierung von Variablen ist nicht zwingend erforderlich, um das Objekt verwenden.
Finden Sie in der Dokumentation Seite für mehr details.
InformationsquelleAutor der Antwort Ravindra babu