Primary constructor — в заголовке класса; secondary — через constructor в теле и должен делегировать в primary (this(...)).
Разбор
- Свойства часто объявляют прямо в primary:
class User(val id: Long).
init {} блоки выполняются при создании.
- Secondary нужны для перегрузок/Java interop.
- Default args часто заменяют несколько конструкторов.
Итог
Primary + default arguments покрывают большинство кейсов без secondary.