吹静静

欢迎QQ交流:592590682

Scala 构造器和Java的构造方法有相似之处,Scala 构造器分为主构造器和附属构造器,主构造器只有一个,附属构造器可以有无数个。

主构造器

在我们对一个类实例化的时候,一定会调用主构造器,或显式调用或隐式调用的区别而已。

定义一个主构造器

class 类名(....)

主构造器可以携带参数列表,也可以不携带参数列表,例如很多类在定义的时候可能不会带有参数,这时类的主构造器就没有参数。

附属构造器

1. 附属构造器的名称统一为 this ;

2. 每一个附属构造器都必须显式地调用其它附属构造器或者主构造器。

DEMO

/**
 * class 类名(....)  在Scala中叫做主构造器
 *
 * 附属构造器
 */
class Person(val name:String, val age:Int) {   // 默认也把括号中定义的东西转成属性
  println("Person Constructor enter...")

  val school = "pku"
  var gender:String = _

  /**
   * 附属构造器
   * 1) def this定义的叫做附属构造器
   * 2) 一个附属构造器中第一行必须要调用主构造器或者其他附属构造器
   */
  def this(name:String, age:Int, gender:String) {
    this(name, age) // 调用主构造器
    this.gender = gender
  }

  // 默认class里面是有一个toString
  override def toString() = "父类的toString方法"

  println("Person Constructor leave...")
}

 

posted on 2021-02-26 11:18  吹静静  阅读(145)  评论(0编辑  收藏  举报