2

違いは何ですか:

class Pitch(var width: Int = 3, var height: Int = 5) {

    constructor(capacity: Int): this()

}

class Pitch(var width: Int = 3, var height: Int = 5, capacity: Int)

コンストラクターにはどのような利点がありますか?

4

2 に答える 2

2

クラスを次のように定義すると、次のようになります。

class Pitch (var width: Int = 3, var height: Int = 5) {

    constructor(capacity: Int): this() {}

}

Pitchパラメーターなしでコンストラクターを使用してインスタンスを作成できます。つまり、次のようになります。

val p = Pitch()

// also you can invoke constructors like this
val p1 = Pitch(30)     // invoked secondary constructor
val p2 = Pitch(30, 20) // invoked primary constructor

クラスを次のように定義すると、次のようになります。

class Pitch (var width: Int = 3, var height: Int = 5, capacity: Int) {

}

デフォルト値を持つものを除いて、すべてのパラメータが必要です。したがって、この場合、空のパラメーターでコンストラクターを使用することはできません。少なくとも 1 つのパラメーターを指定する必要がありますcapacity

val p = Pitch(capacity = 40)

したがって、最初のケースでは、パラメーターなしでコンストラクターを使用する利点があります。2 番目のケースで、コンストラクターを呼び出してパラメーターを渡したい場合は、コンストラクターcapacityを使用するときに明示的に名前を付ける必要があります。

于 2019-01-26T07:38:35.057 に答える