2011-01-13 5 views
3

Пожалуйста, объяснитеСупер конструктор в Java

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; 
} 

супер() без аргументов внутри означает, что более одного аргументы, которые будут определены? И это делается с помощью «this.xxx»?

Почему мы определяем в «открытом контакте». Почему мы определили снова и назвали его аргументы здесь?

+0

super вызывает конструктор родительского класса в вашем случае, конструктор класса объекта – ant

ответ

7

супер() без аргументов внутри не означает, что более одного аргументы, которые будут определены?

Нет, super() просто вызывает конструктор без аргументов базового класса, в вашем случае 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; 
    // ... 
6

super() вызывает конструктор по умолчанию (no-arg) суперкласса. Это связано с тем, что для того, чтобы построить объект, вы должны пройти через все конструкторы по иерархии.

super() может быть опущен - компилятор автоматически вставляет его там.

В вашем случае, суперкласс Object

Смежные вопросы