Kotlin includes robust support for a variety of different OOP concepts. It has been designed based on years of research and experience from other languages to make OOP easier. Kotlin natively supports concepts such as delegation and singletons. Kotlin provides rich data types such as data classes to reduce boilerplate and sealed classes to help to model restricted class hierarchies. Interfaces in Kotlin bring features from newer versions of Java as well as new features such as interface properties, which can be used in domains such as Android where newer Java features may not be available. Kotlin's feature set allows you to more easily organize your day in whatever way makes sense to you and enables developers to write concise, flexible, object-oriented code.
In the next chapter, we'll focus on why interoperability between Kotlin and Java is such a big part of...