scala 类和对象 样例类 类的继承

类和对象

package scala

object Demo9Class {
  def main(args: Array[String]): Unit = {

    /**
      * 类和对象
      *
      */

    val student = new Student(1, "张三")

    println(student._name)
    println(student.getId())

    println(student)

    System.out.println(student)

    val lisi = new Student(2, "李四", 24)

    println(lisi)

  }
}

/**
  * 类中可以定义属性,方法,构造函数
  *
  *
  * scala 的类有一个默认构造函数,默认构造函数可以有参数
  *
  */

class Student(id: Int, name: String) {
  println("默认构造函数")

  //定义属性并赋值
  //private 属性私有化
  private val _id: Int = id
  val _name: String = name


  // 下划线  占位符,没有实际意义,只是起到占位置的功能
  var _age: Int = _

  //定义方法
  def getId(): Int = {
    return _id
  }

  //省略
  //def getId: Int = _id


  //override 方法重写
  override def toString: String = {
    "Student(" + _id + "," + _name + "," + _age + ")"
  }
  
  /**
    * 重载构造函数
    *
    * 再重载构造函数的第一行需要显示调用默认构造函数
    *
    */

  def this(id: Int, name: String, age: Int) {
    //调用默认构造函数
    this(id, name)

    //给属性赋值
    this._age = age

  }

}

样例类

package scala

object Demo10CaseClass {
  def main(args: Array[String]): Unit = {
    val user = new User("001","张三")

    println(user)
    println(user.id)
    println(user.name)

    //修改属性
    user.name="李四"

    //样例类创建对象可以不用new
    val user1 = User("002","李四")
    println(user1)
  }
  /**
    * 样例类
    * scala编译器在编译的时候会动态给样例类增加很多方法(toString,hashCode,序列化,属性)
    *
    * 属性和参数是一样的
    *属性默认是val,是不可变的,改成val,就可以修改了
    *
    * */
  case class User(id:String,var name:String )
}

 类的继承

package scala

object Demo11EX {
  def main(args: Array[String]): Unit = {
    val a = new A("001","张三")
    a.print()


    val lisi = new B("003","李四",24)

    lisi.print()
  }
}
class A(id:String,name:String){
  println("A的默认构造函数")
  val _id :String =id
  val _name:String=name

  def print(): Unit ={
    println(_id+"\t"+_name)
  }
}

/**
  * 类的继承,会继承父类的属性和方法
  *  继承的时候调用父类的构造函数
  *
  * */
class B(id:String,name:String,age:Int) extends A(id,name){
  println("B的默认构造函数")
  val _age :Int=age
}

 

posted @ 2021-07-13 15:10  坤坤无敌  阅读(211)  评论(0)    收藏  举报