1主构造函数的参数
1. var 是可以修改的属性
2. val 是不可以修改的属性
3.而没有使用val或者var修饰的,不是属性,不可在外部访问,不可改写。
object Main {
// 定义类
class Customer(val name:String, var sex:String,var age:Int) {
def sayHello(msg:String ) = {
println("msg:", msg)
}
}
def main(args: Array[String]): Unit = {
val c = new Customer(“小花”,”女”)
c.sex = "男"// 正确
c.name = "小明" // 错误,name是val修饰的
}
}
2this关键字链式风格
this在类内部表示当前对象,我们可以利用这个特点实现对象方法的链式调用。
def sayHello():this.type= {
this
}
def eat():this.type= {
this
}
s = new Student()
s.sayHello().eat().say()
3辅助构造函数
辅助构造器的方法名固定为this,其参数不能使用var或val修饰,且必须在第一行代码中直接或间接调用主构造器
辅助构造器的作用
1.提供多种初始化方式:
辅助构造器允许类提供多种初始化选项,使得创建对象时更加灵活。
2.简化对象创建:
通过定义多个辅助构造器,您可以简化对象的创建过程,避免在主构造器中处理过多的参数。
3.调用主构造器:
辅助构造器可以通过 this 关键字调用主构造器,从而确保所有初始化逻辑都集中在主构造器中。
class 类名(参数列表A) {
def this(参数列表B){
this(参数列表A)
其他代码
}
def this(参数列表C){
this(参数列表A)
其他代码
}
}
def main(args: Array[String]): Unit = {
new 类名(参数列表A) // 直接调用主构造器
new 类名(参数列表B) // 调用辅助构造器
new 类名(参数列表C) // 调用辅助构造器
```