抽象类中辅助构造函数的用例是什么?

soc*_*soc 14 constructor abstract-class scala language-design

考虑以下代码:

abstract class Foo(val s: String) {
  def this(i: Int) = this("" + (i+2))
}
Run Code Online (Sandbox Code Playgroud)

据我所知,构造函数不是继承的,并且不能使用super类似Java的子类调用辅助构造函数.

它们只是一个无用的工件还是有一些合理的用例?

cou*_*ech 17

scala> object Bar extends Foo(3)
defined module Bar

scala> Bar.s
res3: String = 5
Run Code Online (Sandbox Code Playgroud)


Did*_*ont 11

子类的主要构造函数必须调用超类的构造函数之一,而不一定是主类的构造函数.

abstract class A(s: String) {
  def this(i: Int) = this(i.toString)
}
class B(i: Int) extends A(i)
Run Code Online (Sandbox Code Playgroud)