我不明白为什么要这样做:
public class Example {
private String name;
private String surname;
Example(String firstName, String secondName) {
name = firstName;
surname = secondName;
}
// whatever other code goes here
}
我不明白为什么我需要设置name = firstName
和surname = secondName
。为什么我不能直接设置name
和surname
?
答案 0 :(得分:5)
这些变量不是同一类:
firstName
和secondName
是方法参数。方法结束后,这些变量就会超出范围name
和surname
是班级中的字段。只要实例存在,它们就会“附加”到该类的实例。以下是这意味着什么的说明:
String a = "Hello";
String b = "World";
// For the duration of the constructor, a becomes firstName,
// and b becomes secondName
Example e = new Example(a, b);
// Once the constructor exists, firstName and secondName disappear.
// Resetting a and b after the call is no longer relevant
a = "Quick brown fox jumps";
b = "over the lazy dog";
System.out.println(e.getName()+" "+e.getSurname());
a
和b
的值已更改,但Example
中存储的值仍设置为传递给构造函数的值。
答案 1 :(得分:2)
Example(String firstName, String secondName) {
this.name = firstName;
this.surname = secondName;
}
这是指这个对象。 firstname和secondname都是您稍后将传递的参数。因此,您要为Example对象的字段分配两个值
答案 2 :(得分:0)
调用方法时,您将名称作为参数传递给参数名称和姓氏。
Example test = new Example("Derrick", "Hamilton");
然后,名称将存储在从类创建的对象中。参数name和surname只是数据的临时持有者。构造函数完成后,这些变量将不复存在。
答案 3 :(得分:0)
在这种情况下,firstName和secondName(作为函数参数)只有方法级别范围,因此只要控制从此方法返回,数据就会丢失。另一方面,名称和姓氏将被存储并可用于对此构造函数创建的对象的其他调用。
答案 4 :(得分:0)
name和surname是名为Example的类中定义的实例(成员)变量。当您创建Example类的对象时,内存将被分配给这两个变量并按默认值初始化。这些变量的范围保持不变,直到对象存在。您可以使用对象的引用来访问这些变量。
firstName和secondName是局部变量(方法参数),一旦你拿出方法,这些变量的范围就不存在了。您无法在方法之外访问这些变量。
在Example方法中,这不是它的一个Example类构造函数的一般方法。通过传递fistName和secondName的值来创建Example对象时,它将调用参数构造函数并将值从firstname设置为name,将secondName设置为surname。
为了获得最佳实践,请始终使用参数构造函数定义默认构造函数。
Example()
{
}