构造器、辅助构造器

package day03
/**
  * 构造器、辅助构造器
* 主构造器的参数列表要放到类名的后面,和类名放在一起
* val修饰的构造参数具有不可变性,var修饰的构造参数具有可变性
* 此时声明的faceValue:Int 只能在本类调用,伴生对象也无法调用
* faceValue 虽然没有用val或者var修饰,默认是val
* @param name
* @param age
* @param faceValue
 */
class StructDemo(val name:String, var age: Int,faceValue:Int = 90) {

  var gender: String = _

  def getFaceValue():Int = {
//    faceValue = 100  //此时值是不可更改的,默认是val修饰的
    faceValue
  }

  // 辅助构造器
  def this(name: String, age: Int, faceValue:Int, gender:String){
    this(name,age,faceValue)  //辅助构造器第一行必须先构造主构造器
    this.gender = gender
  }
}

object StructDemo {
  def main(args: Array[String]): Unit = {

//    val s = new StructDemo("ningning",26,98)
    val s = new StructDemo("lulu",26,98,"女")
//    s.name = "tingting"  //无法赋值,因为是用val修饰的
    s.age = 27
    println(s.name)
    println(s.age)
//    println(s.faceValue)
//    val faceValue = s.getFaceValue()
    println(s.getFaceValue())
    println(s.gender)
  }
}

你可能感兴趣的:(构造器、辅助构造器)