Почему this () не разрешен в пустом методе? - PullRequest
0 голосов
/ 02 июня 2018

Я создаю класс A с публичным методом void A (), который имеет this () в качестве первого оператора.Очевидно, что метод () не является конструктором, но компилятор жалуется на то, что this () не является первым утверждением какого-либо конструктора, который, я считаю, неявно создается с помощью super () в качестве первого оператора.На какой конструктор и на что ссылается этот оператор this ()?Спасибо.

class A
{
    public void A(){this();}
}

Ошибка вывода: вызов этого должен быть первым оператором в конструкторе public void A () {this ();} ^ 1 error

1 Ответ

0 голосов
/ 02 июня 2018

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

          A(int x){
              this(); // Calling a no argument constructor of the same class
          }

Но это недопустимо, выдает ошибку компиляции, потому что эторекурсивный вызов конструктора.

          A(){
             this();
          }

Нельзя использовать this() в методах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...