Chapter 3. Object-Oriented Programming in Kotlin
Like Java, Kotlin is an object-oriented programming (OOP) language. As such, it uses classes, both abstract and concrete, and interfaces in a way that is familiar to Java developers.
Some aspects of OOP in Kotlin are worth spending additional time on, and this chapter does so. It includes recipes that involve initializing objects, providing custom getters and setters, performing late and lazy initialization, creating singletons, understanding the
Nothing class, and more.
3.1 Understanding the Difference Between const and val
You need to indicate that a value is a compile-time rather than a runtime constant.
Use the modifier
const for compile-time constants. The keyword
val indicates that a variable cannot be changed once it is assigned, but that assignment can occur at runtime.
The Kotlin keyword
val indicates a variable that cannot be changed. In Java, the keyword
final is used for the same purpose. Given that, why does Kotlin also support the modifier
Compile-time constants must be top-level properties or members of an object declaration or a companion object. They must be of type
String or a primitive type wrapper class (
Boolean), and they cannot have a custom getter function. They must be assigned outside any function, including
main, because their values must be known at compile time.
As an example, consider defining a min and max priority ...