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.