13.11 样例类(重点)

样例类是一种特别的类, 他们经过优化, 然后被用于匹配模式.

如果一个类用case来修饰, 这样的类就是样例类.

package com.atguigu.day11.moshipipei

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

  }
}
// 一个抽象类
abstract class Amount {}
// Dollar: 样例类 继承自 Amount
case class Dollar(value: Double) extends Amount {}

// Currency: 样例类
case class Currency(value: Double, unit : String){}

说明:

  • 从反编译可以看到,当一个类是样例类(就是使用case来修饰类),默认会生成一系列的方法.比如apply,unapply,toString,copy,hashcode,equals等等。

  • 样例类是为模式匹配而优化的类

  • 构造器中的每一个参数都成为val——除非它被显式地声明为var(不建议这样做)

  • 在样例类对应的伴生对象中提供apply方法让你不用new关键字就能构造出相应的对象

  • 提供unapply方法让模式匹配可以工作

  • 将自动生成toString、equals、hashCodecopy方法(有点类似模板类,直接给生成,供程序员使用)

  • 除上述外,样例类和其他类型完全一样。你可以添加方法和字段,扩展它们

Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2019-05-19 09:23:21

results matching ""

    No results matching ""