setter方法和构造函数方法有什么区别?

问题描述 投票:3回答:3
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;
    }

}

在上面的代码中,我编写了一个将创建person对象的类,并将用于创建将实现此person类的其他类。在我写这个超类的时候,我想,setter方法和构造函数之间有什么区别? setter方法是否有用,因为您可以轻松地执行.set(methodName)或?有人愿意解释我的构造函数和我的setter方法之间的区别吗?

java oop constructor setter
3个回答
2
投票

构造函数构造新对象,其中创建setter以更新该对象。

所以,让我们说你的名字是丁东和你住在一起,然后用你的名字和以下地址创建一个人物对象。

12345 15th Street
Area 51, Nevada 12345

然后你沿着街道搬几个街区到:

1234 15th Street
Area 51, Nevada 12345

那么你不需要创建新的Person对象,因为你移动了,你只需要更新地址。这是你将使用setter方法的地方。

结论:Setter用于更新您的记录,构造函数用于创建新的Person对象。

我希望这有帮助!!!!


3
投票

Setter设置先前创建的Objects属性的值。您的案例中的构造函数使用一堆预定义值创建对象。

Class Pizza
Attributes: boolean Extra Cheese , boolean Extra mayonnaise

Ex构造函数调用:

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

Ex setter致电:

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
    }

当我们需要创建具有属性值的对象而不是为每个值显式调用setter并设置它们时,我们应该使用构造函数方法。

虽然两者都有不同的优点,但非常适合Java生态系统。如果你想拥有一个不可变的类使用构造函数,否则使用setter。

如果你想拥有一个不可变的类使用构造函数,否则使用setter。

使用Setters()或mutators,为调用者提供更新特定实例变量值的机会。


更多:

构造函数不需要具有Access说明符,return类型,而setter需要具有访问说明符。


2
投票

塞特斯

  1. Setter方法可以具有传入数据的业务逻辑和验证。它们服务得最好,尤其是涉及状态为瞬态或变化很大的物体时
  2. 与getter方法一起使用时,Setter方法更有用,因为这样可以增强Java中OOP的“Encapsulation”属性。您的实例变量可以完全私有。您甚至可以将对象隐藏在外部世界之外。您可以查看私人施工人员和工厂方法供您参考
  3. 返回类型需要明确提及

构造函数

  1. 它仅在对象创建时使用,因此无论您编写什么逻辑和验证,都需要在其他方法中单独实现,以更新对象的数据
  2. 它们具有隐式返回类型,因此我们不需要编写任何内容。如果我们写任何返回类型,那么该方法不被视为构造函数
最新问题
© www.soinside.com 2019 - 2024. All rights reserved.