Java & Groovy & Scala & Kotlin -

2017-08-06  本文已影响0人  bookislife

Overview

定义样本类

case class Number(n: Int) {
  var comment: String = "Default Comment"
  def eval: Int = n
}

case class Sum(n1: Number, n2: Number) {
  var comment: String = "Default Comment"
  def eval: Int = n1.eval + n2.eval
}

以上定义了两个样本类,其中样本类 Sum 用于计算两个样本类 Number 的和。

使用样本类

样本类在初始化时可以隐式调用构造方法,所以无需使用 new 关键字。

val n = Number(1)

样本类默认实现了 toString() 方法,该方法覆盖了构造方法中的所有参数,而类中定义的变量不会被写到 toString() 方法中

println(n.toString)

样本类默认实现了 equals() 方法,该方法覆盖了构造方法中的所有参数,而类中定义的变量不会被写到 equals() 方法中

val result1 = Sum(Number(10), Number(20))
result1.comment = "result1"
val result2 = Sum(Number(10), Number(20))
result2.comment = "result2"
println(result1 == result2) //  true

文章源码见 https://github.com/SidneyXu/JGSK 仓库的 scala/_18_case_class 小节

上一篇下一篇

猜你喜欢

热点阅读