Chapter 3. Object-Oriented Programming in Kotlin
Kotlin is an object-oriented programming (OOP) language with support for higher-order functions and lambdas. If you don't know what lambdas are, don't worry, there is a full chapter dedicated to them. If you have been using a functional language already, you will find functional language-like constructs supported in Kotlin.
Over time, software complexity has increased, and the OOP abstraction has allowed us to model the problem we have to solve in terms of objects. You can view each object as a minicomputer on its own: it has a state and can perform actions. An object through its available actions exhibits some sort of behavior; therefore, there is a clear analogy between objects/entities and real life.
The first characteristic of an object-oriented abstraction has been pinned down by Alan Key, one of the creators of the first successful OOP language: Smalltalk. In his book The Early History Of Smalltalk, he makes the following...