构造函数

74 阅读2分钟

假如你是一名老师,你需要将学生的一些信息收集起来,就比如,连续一个月的考勤,这个时候就需要构建函数,你作为这个构造函数的人,你也就相当于这个函数的管理人,所以需要辅助构造一些函数,假如你班上有三十个人,你就需要构造三十个辅助函数。

1.就拿上面的前言作为例子,只不过将三十人换成两人

这个时候,就可以敲击以下代码:

// 类是属性的集合
// Student,构造函数用来创建对象的
//                辅助构造函数,提供多种创建对象的方式
class Student(var name: String, var age: Int) {
  println("构造函数被调用...")

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

  // 辅助构造函数
  // (1)它的名字就是this
  // (2)它内部的第一句代码就必须是调用 主构造函数 this("无名氏",0)
  def this() = {
    this("无名氏", 0)
    println("辅助构造函数1被调用...")
  }

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

object base54 {
  def main(args: Array[String]): Unit = {
    // 创建一个学生对象
    val stu1 = new Student("小花", 18)
    // 调用对象的方法
    stu1.sayHi()

    // stu1.age = 19
    // 调用对象的方法
    // stu1.sayHi()

    // 这里没有设置参数,它会调用辅助构造函数
    val stu2 = new Student()
    stu2.sayHi()

    // 这里设置了一个参数,它会调用辅助构造函数
    val stu3 = new Student("小明")
    stu3.sayHi()
  }
}

它的运行结果如图所示:

image.png

2.单独介绍某一个人时,可以使用私有的

这个时候可以敲击以下代码:

object base55 {
  // 私有 private
  class Student(var name:String, var age:Int) {

   // 在方法面前添加 private,那个方法是私有的,它不能在 class的 外部呗访问
   private def song(): Unit = {
     println("我在唱歌....")
   }

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

      // 私有方法,在类的内部是可以正常调用的
      song()
    }
  }

  def main(args: Array[String]): Unit = {
    val stu3 = new Student("小明",18)
    stu3.sayHi()
    // stu3.song() // 会报错
  }
}

运行结果如图所示:

image.png

3.也可以用来计算

输入以下代码:

//object 对象

//单例对象,直接使用object来定义。不能用new!
//单例对象,只有一个,不能通过new来生成多个。它一般用来存放工具方法,常量...
object Tools {
  val PI = 3.14

  def doubleN(n: Int): Int = {
    n * 2
  }
}

object base56 {
  def main(args: Array[String]): Unit = {
    val rst = Tools.PI * Tools.doubleN(2) // 12.56
    println(s"rst = $rst")
  }
}

运行结果如图所示:

image.png