как в 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) класса. Это верно?

Ответы на вопрос(3)

Ваш ответ на вопрос