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方法之间的区别吗?
构造函数构造新对象,其中创建setter以更新该对象。
所以,让我们说你的名字是丁东和你住在一起,然后用你的名字和以下地址创建一个人物对象。
12345 15th Street
Area 51, Nevada 12345
然后你沿着街道搬几个街区到:
1234 15th Street
Area 51, Nevada 12345
那么你不需要创建新的Person
对象,因为你移动了,你只需要更新地址。这是你将使用setter方法的地方。
结论:Setter用于更新您的记录,构造函数用于创建新的Person对象。
我希望这有帮助!!!!
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需要具有访问说明符。
塞特斯
构造函数