Шаг 42.
Основы Kotlin.
Функции. Функции уровня файла в Java

    На этом шаге мы дадим небольшой сравнительный анализ определения функций в Kotlin и Java.

    Все функции, которые вы писали до этого момента, объявлялись на уровне файла Game.kt. Если вы - разработчик Java, это может вас удивить. В Java функции и переменные могут быть объявлены только внутри классов. Это правило не относится к Kotlin.

    Возможно ли такое, чтобы код языка Kotlin компилировался в байт-код Java для запуска на JVM? Разве Kotlin не должен придерживаться тех же правил? Если посмотреть на скомпилированный байт-код Java для Game.kt, то все станет ясно:


Рис.1. Скомпилированный байт-код Java для Game.kt

    Функции уровня файла представлены в Java как статические методы класса с именем, совпадающим с именем файла в Kotlin. (Методы в Java - это то же самое, что и функции.) В этом случае функции и переменные, объявленные в Game.kt, объявляются в Java в классе с именем GameKt.

    Мы узнаем позже, как объявить функции в классах, но возможность объявить функции и переменные вне классов дает свободу выбора при создании функций, которые не привязаны к классу.


Обратите внимание, как определен метод castFireball$default в Game.kt - именно так определяются аргументы по умолчанию.

    На следующем шаге мы рассмотрим перегрузку функций.




Предыдущий шаг Содержание Следующий шаг