3
votes

Quelle est la différence entre les méthodes setter et les méthodes constructeur?

public class Person
{
    private String name;
    private String streetAddress;
    private String cityStateZip;

    public Person()
    {
        name = "John Doe";
        streetAddress = "55 Main Street";
        cityStateZip = "Anywhere, MA 00001";
    }

    public Person(String n, String s, String c)
    {
        name = n;
        streetAddress = s;
        cityStateZip = c;
    }
    public String getName()
    {
        return this.name;
    }
    public void setName()
    {
    this.name = name;
    }
    public String getStreetAddress()
    {
        return this.streetAddress;
    }
    public void setStreetAddress()
    {
        this.streetAddress = streetAddress;
    }
    public String getCityStateZip()
    {
        return this.cityStateZip;
    }
    public void setCityStateZip()
    {
        this.cityStateZip = cityStateZip;
    }
    public String toString()
    {
        String str =    name + "\n" + streetAddress + "\n" + cityStateZip + "\n";
        return str;
    }

}
In the code above I have written a class that will create a person object and will be used to create other classes that will implement this person class. While I was writing this superclass I thought, what is the difference between setter methods and constructors? Are setter methods simply helpful because you can easily just do .set(methodName) or? Would someone be willing to explain the difference between my constructor and my setter method? 

1 commentaires

3 Réponses :


2
votes

Les constructeurs construisent un nouvel objet, où des setters sont créés pour mettre à jour cet objet.

Disons donc que votre nom est Ding Dong et que vous vivez, et que vous créez un objet personne avec votre nom et votre adresse suivante. p >

1234 15th Street
Area 51, Nevada 12345

et vous déplacez quelques blocs dans la rue vers:

12345 15th Street
Area 51, Nevada 12345

Eh bien, vous n'avez pas besoin de créer une nouvelle personne objet parce que vous avez déménagé, il vous suffit de mettre à jour l'adresse. C'est là que vous utiliserez la méthode setter.

Conclusion: Les setters sont là pour mettre à jour votre enregistrement et les constructeurs sont là pour créer un nouvel objet Person.

J'espère que cela vous aidera !!!!


0 commentaires

3
votes

Setter définit les valeurs des attributs Objects créés précédemment. Le constructeur dans votre cas crée l'objet avec un ensemble de valeurs prédéfinies.

Pizza Marinara= new Pizza();
public void setCheese (boolean cheese ) {      //sets the values explictly 
        this.cheese  = cheese ;
    }
public void setMayonnaise (boolean mayonnaise) {
        this.mayonnaise= mayonnaise;             //sets the value explictly
    }

Appel du constructeur ex:

Pizza Margherita = new Pizza(true, false) //sets value of attributes, i.e you want extra cheese or mayonnaise?

Appel Ex setter:

Class Pizza
Attributes: boolean Extra Cheese , boolean Extra mayonnaise

Nous devrions utiliser l'approche constructeur lorsque nous avons besoin de créer un objet avec des valeurs d'attributs plutôt que d'appeler explicitement des setters pour chaque valeur et les définir.

Bien que les deux aient des avantages différents et soient bien adaptés à l'écosystème Java. Si vous voulez avoir un constructeur de classe immuable, utilisez autrement des setters.

Si vous voulez avoir un constructeur de classe immuable, utilisez autrement des setters.

Avec Les Setters () , ou mutateurs, permettent à l'appelant de mettre à jour la valeur d'une variable d'instance particulière.


Plus:

Le constructeur n'a pas besoin d'avoir le type Spécificateur d'accès , return , tandis que les setters doivent avoir spécificateur d'accès strong >.


1 commentaires

@ user7294900, veuillez corriger ma réponse là où elle doit être, j'aimerais en savoir plus.



2
votes

  1. Les méthodes Setter peuvent avoir la logique métier et les validations des données entrantes. Ils sont particulièrement utiles pour les objets dont les états sont transitoires ou changent beaucoup
  2. Les méthodes Setter sont plus utiles lorsque vous les utilisez avec les méthodes getter car elles renforcent ainsi la propriété 'Encapsulation' des POO en Java. Vos variables d'instance peuvent être complètement privées. Vous pouvez même garder votre objet caché du monde extérieur. Vous pouvez consulter les constructeurs privés et les méthodes d'usine pour votre référence
  3. Le type de retour doit être mentionné explicitement

  1. Il n'est utilisé qu'au moment de la création de l'objet, donc quelle que soit la logique et les validations que vous codez devront être à nouveau implémentées séparément dans une autre méthode de mise à jour des données de l'objet
  2. Ils ont un type de retour implicite donc nous n'avons pas besoin d'écrire quoi que ce soit. Si nous écrivons un type de retour, alors cette méthode n'est pas traitée comme un constructeur

0 commentaires