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
Problem
You need to indicate that a value is a compile-time rather than a runtime constant.
Solution
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.
Discussion
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 const
?
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 (Byte
, Short
, Int
, Long
, Float
, Double
, Char
, or 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 ...
Get Kotlin Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.