как в Go, как правило, предпочитают этот термин, в то время как спецификация языка Java использует «значение по умолчанию», так как Java не указывает модуль с именем «unsafe», который требует указания чего-либо о макете объекта. Возможно, «значение по умолчанию» или «начальное значение» было бы лучше, особенно с учетом «нулевого значения» w.r.t. Значения IEEE 754 вызывают вопрос "Какой ноль?"
+ вы можете использовать список инициализаторов для инициализации полей класса до того, как конструктор начнет работать. Например:
Foo::Foo(string s, double d, int n) : name(s), weight(d), age(n) {
// Empty; already handled!
}
Мне любопытно, почему у Java нет подобной функции. Согласно сОсновная Java: Том 1:
C ++ использует этот специальный синтаксис для вызова конструкторов полей. В Java это не нужно, потому что у объектов нет подобъектов, только указатели на другие объекты.
Вот мои вопросы:
Что они подразумевают под «потому что объекты не имеют подобъектов?» Я не понимаю, что такое подобъект (я пытался найти его); они означают создание экземпляра подкласса, который расширяет суперкласс?
Что касается того, почему в Java нет списков инициализаторов, таких как C ++, я предполагаю, что причина в том, что все поля уже инициализированы по умолчанию в Java, а также потому, что Java используетsuper
ключевое слово для вызова конструктора супер (или базового в C ++ lingo) класса. Это верно?