高阶函数4

26 阅读1分钟
package level01

object class01 {
  class Student(var name:String,var age:Int) {
    println("Student构造函数被调用......")

    //辅助构造函数
    def this(name:String) {
      this(name,15)
      println("辅助构造函数被调用......")
    }

    //辅助构造器2
    def this(age:Int) {
      this("未知",age)
      println("辅助构造函数被调用......")
    }


    def sayHello(): Unit = {
      println(s"我是${name},今年${age}")
    }
  }

  def main(args: Array[String]): Unit = {
    //实例化类的对象  stu
    // new的时候,就会自动调用一次构建函数
    val stu = new Student("小花",18)
    //调用对象的方法
    stu.sayHello()

    val stu1 = new Student("小明")
    stu1.sayHello()

    val stu2 = new Student(20)
    stu2.sayHello()
  }
}

private 修饰之后,它就是私有的,在类的外部无法被访问。只能在类的内部被访问。

package level01

object class01 {

  //private:私人的,私有的

  class Student(var name:String,var age:Int) {

    //私有属性
    private val phoneNum:String = "136xxxxxx"

    //私有方法
    def hobby():Unit = {
      println(s"我的个人爱好是隐私信息.....${phoneNum}")
    }

    def sayHello(): Unit = {
      println(s"我是${name},今年${age}")

      hobby()  //在类的内部,可以访问私有成员
    }
  }

  def main(args: Array[String]): Unit = {
    //实例化类的对象  stu
    // new的时候,就会自动调用一次构建函数
    val stu = new Student("小花",18)
    stu.sayHello()
  }
}

目标:让对象被打印的时候,输出信息更友好些

做法:重写 toString方法

在使用println输出一个对象的时候,它会自动调用toString方法,并输出这个方法的返回值

package level01

object class01 {

  class Student(var name:String,var age:Int) {

      override def toString: String =s"Student(${name}),${age})"

  }


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

    val stu1 = new Student("小花",18)
    val stu2 = new Student("小明",19)
    //打印输出一个对象,输出的信息不友好
    // level01.calss01$Student@2133c8f8
    // level01.calss01$Student@43a25848
    println(stu1)
    println(stu2)
  }
}