学这个之前,你知道构造器是干嘛的吗?
构造器是创建这个类的实例时候就要调动这个构造器.是为了构造一个实例的时候给其传参数,为这个实例的参数赋予默认值的(空参构造).
主构造器
- 跟在类名后面,跟类名交织在一起的构造器叫主构造器 辅助构造器是对主构造器的扩展补充
- 一般将参数少的构造方法当作主构造器,参数多的是对少的一种补充
//跟在类名后面,跟类交织在一起叫做主构造器
class Student {
//构造方法
def m1(x :Int,y:Int):Int = (x+y) //成员方法
//给指定类型的变量赋予默认值 数据类型不能省略 使用var
var a :Int = _ //成员变量
println(a) //这些逻辑相当于主构造器
println(123) //CTRL+alt+t 快捷键 try-catch if啥的
//obj名加属性名,方法名
Student.sayHi()
//代码块 调完构造器,执行代码块
{
println(666)
}
}
object Student{
private def sayHi():Unit = {
println("hi~~")
}
def main(args: Array[String]): Unit = {
val s = new Student //初始化完成后,调用构造方法
val i = s.m1(1, 2)
println(i)
print(s)
}
}
scala里没有明确的说明构造代码块,new 一个对象后,这些构造方法,代码块,逻辑什么的依次执行
在java中先执行静态代码块,再执行构造代码块,最后执行构造方法
辅助构造器
- 辅助构造器是对主构造器的补充,一定要用def this
- 辅助构造器一定要调用主构造器或其他构造器,其他构造器一定要调用主构造器
- 辅助构造器相当于Java中的重载构造方法
辅助构造器的方法中的参数不需要加var val修饰 其就相当于局部变量