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、hashCode
和copy
方法(有点类似模板类,直接给生成,供程序员使用)除上述外,样例类和其他类型完全一样。你可以添加方法和字段,扩展它们