Kotlin provides fully featured support for object-oriented programming. As you might expect coming from languages such as Java, in Kotlin you can define classes and interfaces. Additionally, Kotlin provides objects and data classes to make common patterns such as singleton and immutable model classes easier to implement.
In Chapter 5, Modeling Real-World Data, we'll fully explore how to realize OOP in Kotlin.
One of the most interesting aspects of Kotlin is that it not only supports OOP but also has first-class support for functions, and can achieve highly functional programming as well. In the next section, we'll discuss functional programming to help understand how it relates to Kotlin.