请解释
public class Contact {
private String contactId;
private String firstName;
private String lastName;
private String email;
private String phoneNumber;
public Contact(String contactId,String firstName, String lastName, String email, String phoneNumber) {
super(); //what does standalone super() define? With no args here?
this.firstName = firstName;
this.lastName = lastName; //when is this used?, when more than one args to be entered?
this.email = email;
this.phoneNumber = phoneNumber;
}
内部没有参数的Super()意味着要定义多个参数?这是在“this.xxx”的帮助下完成的吗?
为什么我们在“公共类联系”本身中定义。为什么我们再次定义并在此处调用其参数?
答案 0 :(得分:7)
内部没有参数的Super()意味着要定义多个参数?
不,super()
只调用基类的no-arg构造函数,在您的情况下为Object
。
它什么也没做。它只是在代码中明确表示您正在使用no-arg构造函数构造基类。实际上,如果你离开super()
,它将被编译器隐式添加回来。
那么super()
是什么,如果它隐含地添加呢?好吧,在某些情况下,类没有no-arg构造函数。此类的子类必须显式调用某些超级构造函数,例如使用super("hello")
。
<强>
this.lastName = lastName; //when is this used?, when more than one args to be entered?
强>
this.lastName = lastName;
与super()
无关。它只是声明构造函数参数lastName
的值应该分配给成员变量lastName
。这相当于
public Contact(String contactId, String firstName, String lastNameArg,
String email, String phoneNumber) {
// ...
lastName = lastNameArg;
// ...
答案 1 :(得分:6)
super()
调用超类的默认(no-arg)构造函数。这是因为为了构造一个对象,你必须遍历层次结构中的所有构造函数。
super()
可以省略 - 编译器会自动将其插入。
在您的情况下,超类是Object