2015-02-25 3 views
1

Пожалуйста, подтвердите, что ключевое слово this ссылается на его собственный класс, а метод this() ссылается на его собственные классы-конструкторы.В чем разница между этим и этим() в java

class Tester { 

    private String blogName; 

    public Tester { 
      this("stackoverflow"); 

    } 
    public Tester(String str1) {   
     this.blogName= str1; 
    } 
} 

Это помогает мне, если между ними существуют другие различия.

+2

Я подтверждаю это. –

+0

Вы правы. – Jens

ответ

0

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

Второе показывает, как специальное имя this относится к текущему экземпляру внутри класса. Это требуется только разобраться дублирования имен:

public class ThisDemo { 

    private static final String DEFAULT_VALUE = "REQUIRED"; 
    private String value; 

    public ThisDemo() { 
     this(DEFAULT_VALUE); 
    } 

    publi ThisDemo(String value) { 
     // Required here because the private member and parameter have same name 
     this.value = value; 
    } 

    public String getValue() { 
     // Not required here, but I prefer to add it. 
     return value; 
    } 
} 
1

this является ссылкой на объект, от имени которого был вызван текущий метод. this(anything) - это вызов конструктора.

0

this("stackoverflow"); вызывает другой конструктор в классе (это называется делегированным конструктором).

this.blogName= str1; является назначение ссылки на то, что str1 является ссылкой на в полеblogName. В этом случае является избыточным, но используется для устранения неоднозначности имени поля для идентично названного параметра функции.

0

this - это ключевое слово в Java, это означает его текущий экземпляр класса.

this("stackoverflow") вызывает конструктор класса, который будет перегруженным вызовом. Таким образом вы можете вызвать любые другие конструкторы того же класса.

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