Scala构造器,一篇文章让你搞懂!

本文详细介绍了Scala的构造器,包括基本语法、主构造器和辅助构造器的使用,以及构造器的继承。通过实例展示了如何创建和调用不同构造器,并解析了构造器在继承链中的调用顺序。对于初学者,本文提供了全面的理解。
摘要由CSDN通过智能技术生成

小白最近在学Scala,发现网上大部分的视频讲解都讲的不是很全面的和清楚,于是自己倒腾了许久,终于把Scala的构造器原理给理解透了。

其实Scala中的构造器通Java一样,也是在创建对象时初始化实例,不过Scala中的构造器与Java中的又有些许不同,具体又有哪些东西呢,让我们来深入剖析一下。

 

基本语法

class 类名(形参列表) {  // 主构造器

   // 类体

   def  this(形参列表) {  // 辅助构造器

   }

   def  this(形参列表) {  //辅助构造器可以有多个...

   }

}

//1. 辅助构造器 函数的名称this, 可以有多个,编译器通过不同参数来区分,类似于Java中的重载方法

//2. 构造器有无参构造和有参构造,如果是无参构造的话可以省略小括号

 

基本用法

1.主构造器

创建无参主构造方法,并实例化

 

object Test {
  def main(args: Array[String]): Unit = {
    //调用主构造方法
    val student = new Student11()

  }
}

class Student11(){
  var name: String = _
  var age: Int = _
  println("无参主构造方法被调用")

}

 2.辅助构造器

创建辅助构造方法,(这里注意,辅助构造要有区别于主构造方法,或者其他方法)


object Test {
  def main(args: Array[String]): Unit = {
    //调用主构造方法
    val student = new Student11()
    val student1 = new Student11("alice")

  }
}

class Student11(){
  var name: String = _
  var age: Int = _
  println("无参主构造方法被调用")

  //声明辅助构造方法
  def this(name: String) {
    //每个辅助构造方法必须调用主构造方法或者其他构造方法,this调用主构造方法
    this
    this.name = name
    println(" 辅助构造方法被调用")
    println(s"name: $name ,age: $age")
  }
}


执行结果

"C:\Program Files\Java\jdk1.8.0_281\bin\java.exe" "-javaagent:D:\Program Files (x86)\JetBrains\IntelliJ IDEA 2021.1.1\lib\idea_rt.jar=60080:D:\Program Files (x86)\JetBrains\IntelliJ IDEA 2021.1.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_281\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_281\jre\lib\jfr.jar;C:\Pr
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值