次のような意味ですか?
abstract class A protected (val slot: Int) {
protected def this() = this(0)
}
abstract class B protected (value: Int) extends A(value) {
protected def this() = this(0)
}
class C extends B(3) {
}
AFAIKには、セカンダリフォームの1つからプライマリコンストラクタをバイパスする方法はありません。つまり、次の機能は機能しません。
abstract class B protected (value: Int) extends A(value) {
protected def this() = super()
}
すべてのセカンダリコンストラクタフォームは、プライマリフォームを呼び出す必要があります。言語仕様(5.3.1コンストラクター定義)から:
クラスには、プライマリコンストラクター以外に追加のコンストラクターが含まれる場合があります。これらは、def this(ps1)...(psn)=eの形式のコンストラクター定義によって定義されます。このような定義により、包含クラスに追加のコンストラクターが導入されます。パラメーターは、仮パラメーターリストps1、...、psnで指定され、その評価はコンストラクター式eによって定義されます。各仮パラメーターのスコープは、後続のパラメーターセクションとコンストラクター式eです。コンストラクター式は、自己コンストラクター呼び出しthis(args1)...(argsn)か、自己コンストラクター呼び出しで始まるブロックのいずれかです。
(私の強調)。