scala面相对象

63 阅读1分钟

面向对象三大特征

  1. 封装
  2. 继承
  3. 多态
  • Person就是一个类名,理解为变量名。
  • 首字符是大写
  • 类名一般来说是名词
object Base28 {
  class Person() {}

  class Student() {

    var name: String = "小花"
    var age: Int = 10
  }

  def main(args: Array[String]): Unit = {
    val p1 = new Person()
    val s1 = new Student()
    println(s1.name)
    s1.name = "小花花"
    println(s1.name)
  }
}

var

object Base29 {

  class Student() {

    var name: String = "小花"
    var age: Int = 18
    def say():Unit = {
      println(s"${name},${age}")
    }
  }

  def main(args: Array[String]): Unit = {
    val s1 = new Student()
    println(s1.name)
    s1.say()
  }
}
object Base30 {
  class Student(var name:String = "小花", var age:Int = 18) {
    println("Student......被调用了....")

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

  def main(args: Array[String]): Unit = {
    val s1 = new Student()
    s1.say()
    val s2 = new Student("小明",19)
    s2.say()
  }
}
object Base31 {
  class Student(var name:String, var age:Int,var gender:String="男",var nav:String="汉族") {

    def say(): Unit = {
      println(s"${name},${age},${gender},${nav}")
    }
  }

  def main(args: Array[String]): Unit = {
    var s1 = new Student("小明",19)
    s1.say()
    val s2 = new Student("小花",18,"女","回族")
    s2.say()
  }
}

构造器中的参数的类型

  1. val定义的属性,不能修改
  2. var定义的属性,可以修改
  3. 没有val,也没有var的,不是对象的属性,不能使用语法来访问
object Base32 {
  class Student(var name:String, var age:Int,var gender:String="男") {
    def say(): Unit = {
      println(s"${name},${age},${gender}")
    }
  }

  def main(args: Array[String]): Unit = {
    var s1 = new Student("小明",19)
    s1.say()
  }
}