辅助构造函数

42 阅读1分钟
student()构造函数(构建量),用来创建对象
1.主构造函数 class Student()
2.辅助构造函数,提供更多的方法来构造对象
辅助构造函数
特点:1.名字就是this
2.第一句代码就是调用主构造器
package level02

class Student(var name:String,val age:Int) {
  println("Student.........")
  //辅助构造函数
  //特点:1.名字就是this 2.第一句代码就是调用主构造器
  def this()={
    this("未知的",18)
    println("辅助构造函数被调用了...")
  }
  def this (age:Int)={
    this("未知的",age)
  }
  def sayHi(): Unit = {
    println(s"我是${name},我今年${age}")
  }
}

object  Class01 {
  def main(args:Array[String]):Unit = {
    //创建对象。new 会自动调用构建函数
    val stu1 = new Student("小花",18)
    val stu2 = new Student()
    val stu3 = new Student(20)
    //调用对象的方法
    stu1.sayHi()
    //调用对象函数的方法
    stu2.sayHi()
    stu3.sayHi()
  }
}

private:私有的。不对外公布。在外面币可以访问。在家之外的地方,不可以被别人知道...

package level02

object Class04 {
  class Student(){}
  class Teacher(){}
  def main(args:Array[String]): Unit = {
    val age:Int = 1
    val stu = new Student()
    println(stu.getClass)
    println(age.getClass)
    println(stu.isInstanceOf[Student])
    println(stu.isInstanceOf[Teacher])

  }
}
package level02

object Class05 {
//目标:改进类的代码,让它在println的时候,输出的信息更有好一点!
  //重写toString方法
  //(1)override 重写
  class Student(var name:String,var age:Int) {
    override def toString:String = s"姓名:${name}"
  }
  def mian(args:Array[String]):Unit = {
    val stu1 = new Student("小花",18)
    val stu2 = new Student("小明",18)
    println(stu1)
    println(stu2)
  }
}