在scala中构建对象时也需要使用构造器,并且可以用多个构造器,
scala的构造器分为主构造器和辅助构造器两类, 构造器的作用时为了完成对新对象的初始化,构造器没有返回值。
每一个辅助构造器都必须把 主构造器的参数列表调用一遍(可以直接或间接)
辅助构造器,必须在第一行显式调用主构造器,方法名字为: this
基本使用:
// person有4个构造器,一个主构造器Person() 三个辅助构造器
class Person2(){
var name:String = _
var age:Int = _
def this(name:String) {
this() //直接调用主构造器
this.name = name
}
def this(name:String,age:Int){
this(name) // 调用前一个辅助构造器
this.age = age
}
// 辅助构造器
def this(age:Int) {
this("匿名") // 调用主构造器 def this(name:String)
this.age = age
}
}
构建对象
val person2 = new Person2("tom") // 调用第一个辅助构造器
val person3 = new Person2("jack",10) // // 调用第二个辅助构造器
val person4= new Person2(10) // 调用第三个构造器
高级属性:
给某个属性加入@BaenProperty注释后,会生成getXxx和SetXxx的方法,此方法与原属性不会冲突,可以共存
import scala.beans.BeanProperty
object BeanPropertDemo {
def main(args: Array[String]): Unit = {
val car = new Car
car.name = "宝马"
println("car.name="+car.name)
// 使用@BeanProperty 自动生成的getxxx 和setxxx
car.setName("奔驰")
println("car.getName="+car.getName)
}
}
class Car {
@BeanProperty var name:String = null
}