scala - 是否可以在 Scala 中重载构造函数?

标签 scala overriding

我的问题是,是否可以在 Scala 中重载构造函数?

所以我可以编写如下代码:

var = new Foo(1)
var = new Foo("bar")

如果不可能,是否有任何等效的技巧?

最佳答案

当然可以,但有限制。 Scala 要求您的构造函数之一是“主要的”。主构造函数具有特殊的、方便的语法,将构造函数参数放在类名之后。也可以定义其他“辅助”构造函数,但它们需要调用主构造函数。这与 Java 不同,而且限制性更强。这样做是为了使构造函数 args 可以被视为字段。

你的例子看起来像

class Foo(myArg:String){ //primary constructor
   def this(myIntArg:Int) = this(myIntArg.toString) //secondary constructor
}

val x = new Foo(1)
val y = new Foo("bar")

关于scala - 是否可以在 Scala 中重载构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3793418/

相关文章:

java - 覆盖方法 "equals"不适用于 99 id

iphone - 如何从其他地方调用 Objective-C 对象父类(super class)的方法?

scala - toIterable 的目的

scala - 写入同一文件的多个 Actor + 旋转

arrays - 如何在application.conf中读取数组环境变量?

Scala for 循环。以简洁的方式获取索引

Scala 隐式用于任意深度的仿函数组合

c# - C# 中的重写和继承

python - 继承:更改子方法的签名

javascript - 如何重写 XMLHttpRequest?