我正在编写一个scala代码,并希望在扩展参数化类时处理不同的构造函数。例如:
ng-show
但是,我想要的是Employee可以有两个构造函数,其中一个构造函数需要构造Person的信息,另一个需要另一个Employee来构造:
class Person (val name:String, val age: Int)
class Employee(name:String, age:Int, val position:String)
extends Person(name, age)
如果我想让两个构造函数都有效,我该怎么办?
谢谢!
答案 0 :(得分:3)
如果你想要两个构造函数,你只需编写两个构造函数:
class Person(val name: String, val age: Int)
class Employee(name: String, age: Int, val position: String) extends
Person(name, age) {
def this(e: Employee) = this(e.name, e.age, e.position)
}
val emply1 = new Employee("yzh", 30, "CEO")
val emply2 = new Employee(emply1)
答案 1 :(得分:3)
您需要添加一个腋下构造函数。
class Employee(name:String, age:Int, val position:String)
extends Person(name, age) {
def this(emp: Employee) = this(emp.name, emp.age, emp.position)
}
如果您的Employee
是case class
,那么您可以改为执行此操作。
val emply1 = Employee("yzh", 30, "CEO")
val emply2 = emply1.copy()