scala:主构造方法和辅助构造方法

@

构造器(构造方法)

作用:

  • 构造对象
  • 初始化属性(给对象的属性赋值)

Java中构造器

  • 方法名和类名保持一致
  • 构造方法没有返回值类型
  • 构造方法可以重载

Scala中构造器

主构造方法#

  • 在声明类的同时,就定义了主构造方法,换言之,类就是主构造方法
  • 在一个类中,主构造方法只能有一个

辅助构造方法#

  • 方法名必须叫this
  • 在辅助构造方法开始(第一行)必须直接或者间接的调用主构造方法
  • 辅助构造方法可以重载

scala代码示例

Copy
object Scala08_TestConstructor { def main(args: Array[String]): Unit = { //val std: Student08 = new Student08() //val std: Student08 = new Student08("jingjing") val std: Student08 = new Student08("jingjing",18) } } class Student08{ println("0----Student08的主构造方法被调用了") var name:String = _ var age:Int = _ //声明辅助构造方法 def this(name:String){ //直接调用主构造方法 this() println("1----Student08的辅助构造方法被调用了") this.name = name } def this(name:String,age:Int){ //间接调用主构造方法 this(name) println("2----Student08的辅助构造方法被调用了") this.age = age } /*//以下写法不是构造方法 def Student08()={ println("Student08的构造方法被调用了") }*/ }

scala有参数的主构造方法

  • 在声明主构造方法参数的时候,如果参数前什么也不加,那么参数就作为当前类的局部变量使用,不能作为类的属性被访问
  • 如果需要将参数作为属性被访问的话,那么在参数声明前加var或者val关键字
  • 主构造方法参数不能和类中定义的属性名相同
Copy
object Scala09_TestConstructor { def main(args: Array[String]): Unit = { //val stdJ: Student09 = new Student09 //stdJ.name = "jingjing" //stdJ.age = 16 //println(stdJ.name) var std = new Student09("jingjing",17) println(std.name) } } /* //只提供无参的主构造,单独定义 class Student09{ var name:String = _ var age:Int = _ } */ /* //在scala语言中,以下写法比较少,如果这样写,那就是受java毒害太深了 class Student09(namePararm:String,ageParam:Int){ var name:String = namePararm var age:Int = ageParam } */ //在声明主构造方法参数的时候,如果参数前什么也不加,那么参数就作为当前类的局部变量使用,不能作为类的属性被访问 //如果需要将参数作为属性被访问的话,那么在参数声明前加var或者val关键字 class Student09(var name:String, var age:Int){ def m1(): Unit ={ println(name) println(age) } } /* //同时提供主、辅助构造方法 class Student09{ var name:String = _ var age:Int = _ def this(name:String,age:Int){ this() this.name = name this.age = age } }*/
posted @   孙晨c  阅读(508)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
· .NET 适配 HarmonyOS 进展
· .NET 进程 stackoverflow异常后,还可以接收 TCP 连接请求吗?
· SQL Server统计信息更新会被阻塞或引起会话阻塞吗?
阅读排行:
· 本地部署 DeepSeek:小白也能轻松搞定!
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)
· 我们是如何解决abp身上的几个痛点
· 如何基于DeepSeek开展AI项目
点击右上角即可分享
微信分享提示
CONTENTS