Scala 中的类和对象

11 阅读1分钟

  • class 类

  • var 修饰的属性是可以被修改的

  • val 修饰的属性是只读的,不能被修改

  • 1.主构函数 class Student

  • 2.辅助构造函数,提供更多的方式来创建对象

package level02

class Student(var name:String,val age:Int) {
  println("Student......")
  // 辅助构造函数
  // 特点:名字就是this  第一句代码就是调用主构造器
  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:私有的。不对外公布,不对外发布,在外面不可以访问。在家之外的地方,不可被别人知道....

object Class02 {
  class Student(val name:String, val age:Int) {
    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()// 在类的外部,无法访问私有属性
    }
  }

判断类和对象的关系

  • 方式1:对象.getClass()
  • 方式2:对象.isIntanceof[类]
object Class03 {
  class Student(){}
  class Teacher(){}

  def main(args: Array[String]): Unit = {
    val age:Int = 1
    val stu = new Student()
    // stu 是对象名
    // student 是类名
    // stu是student类的实例
    
    // 返回值

    println(stu.getClass)
    println(age.getClass)
    
    // 注意:[],结果是boolean值

    println(stu.isInstanceOf[Student])
    println(stu.isInstanceOf[Teacher])
  }

}