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)