Scala学习之构造器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35370485/article/details/77541354

Scala的构造器和Java的构造器完全不同,不要搞混淆!

Scala的构造器分为:

主构造器

辅助构造器(从构造器)


与Java构造不同之处在与Scala不需要定义与类名相同的方法作为构造器



主构造器:

主构造器的参数列表直接写在类名(Class)后面,构造器的内容和Java一样定义在类的里面。

所以,一个Scala类中,除了参数,方法以外的代码都是主构造的内容。

class ConstructorTest(name:String,age:Int){
  println("start.........")

  println("stop..........")
}


生成对象

val ct = new ConstructorTest("小健",20)


结果:

start.........
stop.........


为什么生成对象时会打印这语句呢?

因为一个Scala类中,除了参数,方法以外的代码都是主构造的内容。


辅助构造器:

辅助构造器(从构造器),都以def this开始

class ConstructorTest(name:String,age:Int){
  println("start........")
  var n = name
  var a = age
  println("my name is "+name +",my age is "+age)
  def this(name:String){

    this(name,20)

  }

  println("stop.........")
}


生成对象
 val ct = new ConstructorTest("小健")


结果:

start........

my name is 小健,my age is 20

stop.........


注意:

辅助构造器,第一行必需调用主构造器或者其他已存在的辅助构造器
并且只能调用在自己之前定义的其他辅助构造器,而不能调用后面定义的辅助构造器(避免死循环调用)

参数不可以用val或var来修饰

没有更多推荐了,返回首页