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

时间:2017-04-17 05:18:56

标签: scala constructor user-defined-functions abstract extends

我正在编写一个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)

如果我想让两个构造函数都有效,我该怎么办?

谢谢!

2 个答案:

答案 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)
}

如果您的Employeecase class,那么您可以改为执行此操作。

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