Java & Groovy & Scala & Kotlin - 18.样本类 (Scala)

Overview

  • 样本类是 Scala 中使用关键字 case class 声明的类。它可以隐式调用构造方法进行初始化,样本类没有副构造方法。
  • 样本类默认基于构造方法实现了 toString(), equals()hashCode() 方法,不在构造方法中定义的属性不会产生在 toString() 的结果中。
  • 样本类可以直接使用 == 进行比较,同样不在构造方法中定义的属性不会用在比较上
  • 样本类被大量使用在模式匹配中

定义样本类

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 小节

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,760评论 18 399
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,276评论 9 118
  • Overview 类在面向对象编程中是一个最基本的概念。类是对象的模板,用于产生具有相同结构的对象。一个类通常由属...
    bookislife阅读 937评论 0 0
  • 01. 锦月,躺在医院的重症病房里,准确的说,躺在那儿的仅仅只是她的一副躯体。 曾经的锦月并不相信人有灵魂这一说法...
    七月冬眠阅读 1,448评论 18 49
  • 禅坐于垫子上,双腿伸直,双手落于体后,指尖朝向臀部方向。 屈双膝,脚底着地即可,深吸气,脊柱延伸,上抬髋臀向上,大...
    aily群阅读 5,308评论 0 1