Scala:扩展参数化类时处理不同的构造函数

Scala:扩展参数化类时处理不同的构造函数,scala,constructor,user-defined-functions,abstract,extends,Scala,Constructor,User Defined Functions,Abstract,Extends,我正在编写scala代码,并希望在扩展参数化类时处理不同的构造函数。例如: class Person (val name:String, val age: Int) class Employee(name:String, age:Int, val position:String) extends Person(name, age) 然而,我想要的是,员工可以有两个构造函数,其中一个获取人员信息进行构造,另一个获取另一个员工进行构造: val emply1 = new Employ

我正在编写scala代码,并希望在扩展参数化类时处理不同的构造函数。例如:

class Person (val name:String, val age: Int)
class Employee(name:String, age:Int, val position:String) 
      extends Person(name, age)
然而,我想要的是,员工可以有两个构造函数,其中一个获取人员信息进行构造,另一个获取另一个员工进行构造:

val emply1 = new Employee(yzh, 30, CEO)
val emply2 = new Employee(emply1)
如果我想让两个构造函数都工作,我该怎么做


谢谢

如果需要两个构造函数,只需编写两个构造函数:

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)

您需要添加一个腋窝构造函数

class Employee(name:String, age:Int, val position:String)
  extends Person(name, age) {
  def this(emp: Employee) = this(emp.name, emp.age, emp.position)
}
如果您的
员工
案例类
,那么您可以这样做

val emply1 = Employee("yzh", 30, "CEO")
val emply2 = emply1.copy()