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名指本名,不是带点号的限定名。

posted @   秋渡晚枫  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
点击右上角即可分享
微信分享提示