Созданы ли типы данных Kotlin из примитивных или не примитивных типов данных Java?

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

a: constructor

f(), который вызывается следующим, а так как подкласс переопределяет метод суперкласса, вызывается подкласс f(). Итак, вы увидите

B: f()

. Теперь подкласс еще не инициализирован (все еще выполняется super ()), поэтому x по умолчанию имеет значение 0, поскольку это значение по умолчанию для типа int. Поскольку вы увеличили его (this.x++;), он становится 1

B: x = 1

Теперь конструктор суперкласса завершен и возобновляется в конструкторе подклассов и, следовательно,

B: constructor

переменные экземпляра теперь установлены на значения, которые вы указали (против значений по умолчанию, соответствующих типу (0 для численных значений, false для boolean и null для ссылок))

ПРИМЕЧАНИЕ. Если теперь вы напечатаете значение x на вновь созданном объекте, это будет 10

. Поскольку это плохая практика, инструменты статического анализа кода (PMD, FIndBugs и т. Д.) Предупреждают если вы попытаетесь это сделать.

34
задан ajax992 31 July 2017 в 16:18
поделиться