Kotlinでは、コンストラクタを複数持つことが可能です。
それらをセカンダリコンストラクタといいます。

使用例を見て見ましょう

上記例では、セカンダリコンストラクタとして引数が空のものを定義し、
プライマリコンストラクタを呼び出しています。

デフォルト引数を持つコンストラクタ

コンストラクタにもデフォルト引数を持たせることが可能です。
例を見ましょう

クラスPersonをインスタンス化する際、ageには0が初期値として入っているので、
name = john
age = 0
となります。

初期化処理を書きたい場合はinitへ

初期時の処理を書きたい場合は、

init{}

ブロックに記述します。

例を見ましょう

class Personはコンストラクタでageに値を代入するようになっています。
初期化時に実行されるinit{}ブロックでは、ageに-の値が入らないように、
-の場合はageに20を代入する処理を入れました。

main関数では、ageに-1を代入しているので、ageには20が代入されます。