это () и это - PullRequest
       8

это () и это

4 голосов
/ 01 февраля 2012

Имеет ли Java this()?

Если так, в чем разница между this и this()?

Ответы [ 4 ]

12 голосов
/ 01 февраля 2012

this является ссылкой на текущий экземпляр.this() - это вызов конструктора по умолчанию.super() - это явный вызов конструктора по умолчанию для суперкласса.

8 голосов
/ 01 февраля 2012

this является ссылкой на текущий объект.this() - это вызов конструктора по умолчанию;это допустимо только внутри другого конструктора и только как первый оператор в конструкторе.Вы также можете вызвать super(), чтобы вызвать конструктор по умолчанию для суперкласса (опять же, только в качестве первого оператора конструктора).Фактически это автоматически вставляется компилятором, если в коде нет this() или super() (с аргументами или без аргументов).Например:

public class A {
    A() {
       super(); // call to default superclass constructor.
    }

    A(int arg) {
        this(); // invokes default constructor
        // do something special with arg
    }

    A(int arg, int arg2) {
        this(arg); // invokes above constructor
        // do something with arg2
    }
}
1 голос
/ 01 февраля 2012

this - ключевое слово в java, используемое для хранения ссылочного идентификатора текущего объекта.
В то время как this() является вызовом конструктора по умолчанию в вашем java program.

Фрагмент кода для this():

class ThisTest{
    ThisTest(){
        System.out.println("this is the default constructor of your class");
    }
    ThisTest(int val){
        this();
        System.out.println("this is the parameterized constructor of your class and the passed value is "+val);
    }
    public static void main(String...args){
        ThisTest tt=new ThisTest(10);
    }
}

В приведенном выше коде вы создали объект вашего класса с помощью параметризованного конструктора, но this() должен быть первым в вашем конструкторе any, чтобы вызвать любой другой конструктор.
Вы также можете изменить приведенный выше код на:

ThisTest(){
    this(10);
    //above code
}
ThisTest(int val){
    //above code
}
public static void main(string...args){
    ThisTest tt=new ThisTest();
}
1 голос
/ 01 февраля 2012

Да, в Java есть this(). this() вызывает беспараметрическую перегрузку конструктора для текущего класса. this является ссылкой на текущий экземпляр (объект) класса.

...