构造函数

57 阅读2分钟

1. 类是属性和行为的集合。

(1) 属性也叫成员变量:名词,用来描述事物的外在特征

(2) 行为也叫成员方法:动词,表示事物能做什么

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

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

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

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

object base61 {
  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()
    }
  }

私有

object base62 {
    // 私有 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 () // 会报错}}
}
}

单例对象

//object 对象

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

  def doubleN(n:Int):Int = {
    n * 2
  }
 }
object base63 {
  def main(args: Array[String]): Unit = {

    val rst = Tools.PI * Tools.doubleN(2) // 12.56

    println(s"rst = ${rst}")

  }
}