类定义2025.10.29

22 阅读1分钟

// var 修饰的属性是可以被修改的
// val 修饰的属性是只读的,不能被修改
// student() 构造函数(构造器),用来创建对象
// 1. 主构造函数 class Student()
// 2. 辅助构造函数,提供更多的方式来创建对象

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()
  }
}
  1. 类声明格式:使用 class 关键字,括号内指定属性参数,格式为 class 类名(属性1:类型, 属性2:类型)
  2. 方法定义:在类内部用 def 关键字定义方法,示例中 sayHi() 方法实现了打印个人信息的功能,通过 s"${变量}" 语法实现字符串插值。


package level02

object Class02 {
  class Student(val name: String, val age: Int) {

    // private: 私有的。不对外公布,不对外发布,在外面不可以访问。在家之外的地方,不可以被别人知道.....
    private val hobbies: String = "躲在被子,打手电看恐怖小说"

    private def hobby(): Unit = {
      println(s"${hobbies}")
    }

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

      hobby() // 在类的内部,可以调用私有方法
    }
  }

  def main(args: Array[String]): Unit = {
    val stu = new Student("小花", 18)
    stu.sayHi()
    // println(stu.hobbies)
    // stu.hobby() // 在类的外部,无法访问私有属性
  }
}