3

请解释

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”的帮助下完成的吗?

为什么我们在“公共类联系人”本身中定义。为什么我们在这里再次定义并调用它的参数?

4

2 回答 2

7

内部没有参数的 Super() 意味着要定义多个参数?

不,super()在您的情况下,只需调用基类的无参数构造函数Object

它真的什么也没做。它只是在代码中明确表示,您正在使用无参数构造函数构造基类。事实上,如果你遗漏super()了它,它会被编译器隐式添加回来。

那么super()如果它是隐式添加的呢?好吧,在某些情况下,一个类没有无参数构造函数。此类的子类必须显式调用某个超级构造函数,例如使用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;
    // ...
于 2011-01-13T09:55:31.707 回答
6

super()调用超类的默认(无参数)构造函数。这是因为为了构造一个对象,您必须遍历层次结构中的所有构造函数。

super()可以省略 - 编译器会自动将其插入那里。

在您的情况下,超类是Object

于 2011-01-13T09:54:53.220 回答