Kotlin has two types of constructors, primary and secondary. What is the purpose of having two types? In my opinion it makes the code more complicated and inconsistent. If both types of constructors create objects of a class, they are equally important to a class.
Meanwhile, multiple initialisers also introduce confusion and reduce readability.
Primary constructors cover the poplular use case when you need to save the values passed as the constructor arguments to the properties of the instance.
Basically, a primary constructor provides a shorthand for both declaring a property and initializing it from the constructor parameter.
Note that you can do the same without primary constructors at all:
But, since this happens really often in the codebases, Kotlin primary constructors serve the purpose of reducing the boilerplate here:
Secondary constructors may complement or replace the primary one in order to support several construction routines for a single class.