2016-10-09 2 views
-2

Я новичок в java и пытаюсь понять понятия, касающиеся заголовков для конструктора по умолчанию.Что было бы заголовком конструктора по умолчанию

Заголовок для первого конструктора в Круге является:

public Circle(String label, int radius) 

Если один решает добавить конструктор по умолчанию для класса. Каким будет заголовок для этого конструктора по умолчанию?

Я смотрел онлайн, но на самом деле не видел краткий ответ.

+2

Возможно, вы имеете в виду 'подпись', а не' header' - это будет 'public Circle()' – mszymborski

+0

, что вы подразумеваете под * header of constructor *? –

+1

Конструкторы по умолчанию всегда не имеют параметров. –

ответ

2

Если кто-то решит добавить конструктор по умолчанию к классу.

не решите добавить конструктор по умолчанию. Компилятор добавляет один для вас, если вы вообще не укажете никаких конструкторов.

Тот добавляет определяется JLS§8.8.9:

Если класс не содержит объявления конструктора, то конструктор по умолчанию неявно объявляется. Форма конструктора по умолчанию для верхнего уровня класса, класса члена или локального класса выглядит следующим образом:

  • Конструктор по умолчанию имеет тот же доступ, как класс (§6.6).

  • Конструктор по умолчанию не имеет формальных параметров, кроме неширокого внутреннего класса-члена, где конструктор по умолчанию неявно объявляет один формальный параметр, представляющий непосредственно входящий экземпляр класса (§8.8.1, §15.9.2 , § 15.9.3).

  • Конструктор по умолчанию не имеет предложений бросков.

  • Если объявляемый класс является первоклассным объектом класса, то конструктор по умолчанию имеет пустое тело. В противном случае конструктор по умолчанию просто вызывает конструктор суперкласса без аргументов.

Так что если Circle является публичной, то подпись Значение по умолчанию было бы:

public Circle() 

например, полная генерироваться версия:

public Circle() { 
    super(); 
} 
+0

действительно ценю, что вы нашли время, чтобы предоставить информацию. –

0

Имейте в виду, что по умолчанию конструктор будет добавлен только в том случае, если другой конструктор еще не существует. Поэтому, если класс содержит public Circle (String label, int radius), то конструктор по умолчанию не будет добавлен компилятором. Вам нужно будет явно добавить этот конструктор самостоятельно, если вам это нужно.

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