So, in this chapter, we covered the main goals of the Kotlin programming language.
We went through the variables that are defined, such as val, var, null safety, and type inference. We observed how program flow is controlled by commands such as if, when, for, and while, and we also took a look at the different keywords used to define classes and interfaces: class, interface, data, and abstract class. We learned how to construct new classes and how we inherit from interfaces and implement classes. And finally, we learned what design patterns are good for, and why we need them in Kotlin.
In the next chapter, we'll start discussing the first of the three design pattern families: creation patterns.