1.28
构造函数 constructor
scala class构造函数(构造器)分为两种,主构函数(primary constructor)和辅构函数(auxiliary constructor)。主构函数有且仅有一个,参数列表在类名后的括号中(省略括号时即为无参构造函数),类定义体中的执行代码为主构器的代码。辅构函数可定义多个,在类定义体中定义,像类方法一样,只是方法名是特殊的this
,辅构函数将会调用其他构造函数(主构函数或辅构函数),其函数体内首先应该是对其他构造函数的调用,然后是其他代码。主构函数的可访范围默认公有,如需私有,在主构函数的括号前声明可访范围修饰符,如private,private[this];辅构函数的可访范围设置同类方法的。
主构函数的参数形式为“([[private] val|var] <参数名>:<参数类型>,...)”,如果有val或var,则同时蕴含类字段声明,如果仅是“<参数名>:<参数类型>”则该参数和普通函数参数一样,不蕴含类字段声明。类定义体(类名后的花括号代码块)中定义的字段名不允许与主构函数中的参数名一样,即使主构函数中的参数未蕴含字段声明。
无var、val没有getter、setter。case class是例外,其为functional programming设计,无var/val时相当于带val。无var、val可用在继承时子类的primary constructor参数中传输父类构造器参数,如class Student(name:String,age:Int,val id:String) extends Person(name,age){}
字段可见性默认public,private的val、var不会自动被自动生成getter、setter。private字段对类的所有实例可见,private[this]的仅对本实例可见,private[thisPackage|someAncientPacke|enclosingClass]对某个package或嵌套类可见,package名指本名,不是带点号的限定名。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统