Классы в файлах Kotlin
В Kotlin один файл .kt может содержать
несколько классов, функций и свойств верхнего
уровня. Имя файла не обязано совпадать с именем
класса - важна только строка package
в начале.
package site
class User(val name: String)
class Group(val title: String)
Оба класса принадлежат пакету site и видят
друг друга по короткому имени. Другие файлы
того же пакета тоже обращаются к ним без
импорта внутри site.
Функцию main для запуска можно держать
в отдельном файле или рядом с моделями - package
задаёт общую область имён:
package site
fun main() {
val user = User("Ann")
val group = Group("dev")
println(user.name)
println(group.title)
}
Файл без package относится к корневому
package. Несколько таких файлов делят одну
«безымянную» область - удобно только для
коротких примеров, в проектах package почти
всегда указывают явно.
На JVM имя скомпилированного класса строится
из пакета и имени типа. Если в одном файле
несколько классов, для каждого получится свой
файл байткода - это нормально и не требует
разносить исходники по разным .kt,
если так удобнее читать код.
В одном файле geo/shapes.kt с пакетом
geo объявите классы Point и
Circle. В файле geo/main.kt
с package geo создайте объекты обоих
классов и выведите их.
Разнесите классы User и Group
из примера урока по отдельным файлам
User.kt и Group.kt, сохранив
для обоих файлов тот же package site.
Убедитесь, что файл main.kt по-прежнему
успешно компилируется.