2013-11-22 6 views
0

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

Например, если у меня есть код:

public class Ship{ 
    String name; 
    int position; 

    public Ship(int position){ 
     this.position = position; 
    } 
    public Ship(String name){ 
     this.name = name; 
    } 
    public Ship(){ 
     name = "Titanic"; 
     position = 0; 
    } 
} 

Так что, если у меня есть мой жаргон исправить Ship() является конструктором по умолчанию. В то время как конструкторы с параметрами являются конструкторами инициализации.

Теперь это фон ... вот мой вопрос! Когда я использовал один из конструкторов, содержащих аргумент, что происходит с используемым полем (в этом примере это другое поле). Например, когда я вызываю Ship(5), каково значение поля данных name? Применяется ли значение по умолчанию или просто значение по умолчанию для типа данных?

Означает ли это, что мне нужно установить значение для другого поля, если я вызываю этот единственный конструктор аргументов?

+3

Почему «конструктор по умолчанию» имеет строчное имя и почему конструкторы вне класса? – Justin

+0

-1 Обязательно публикуйте код компиляции (если только вопрос не о том, почему код не компилируется). – user2864740

+0

Приносим извинения, я написал это быстро, чтобы просто объяснить вопрос =). – user2879101

ответ

5

Любые переменные экземпляра, которые вы не инициализируете, присваиваются значениям по умолчанию Java. Примитивные типы получают значение 0, а ссылочные типы - null.

Вам не нужно инициализировать значения, но для ясности лучше всего явно инициализировать все значения.

+0

Итак, я полагаю, что лучшая практика заключается в том, чтобы дать значения переменных экземпляра из get go ... i.e String name = "battleship." Если это так, как работает конструктор по умолчанию? Будет ли это просто публичный корабль() {уже не используются значения по умолчанию для кодового блока b/c} – user2879101

3

Поле получает значение поля по умолчанию: 0 для чисел, null для объектов. Вам нужно будет установить значение другого поля в конструкторе с одним аргументом, если по умолчанию это не то, что вы хотите.

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