/** class、object、case class、case object区别** class 类似Java中的class;* object Scala不能定义静态成员,用定义单例对象代之;* case class被称为样例类,是一种特殊的类,常被用于模式匹配。** 一、class 和 object 关系:* 1.单例对象不能带参数,类可以* 2.对象可以和类名一样时,object被称为伴生对象,class被称为伴生类;* 3.类和伴生对象可以相互访问其私有属性,但是它们必须在一个源文件当中;* 4.类只会被编译,不会被执行。要执行,必须在Object中。** 二、case class 与 class 区别:* 1.初始化的时候可以不用new,也可以加上,但是普通类必须加new;* 2.默认实现了equals、hashCode方法;* 3.默认是可以序列化的,实现了Serializable;* 4.自动从scala.Product中继承一些函数;* 5.case class 构造函数参数是public的,我们可以直接访问;* 6.case class默认情况下不能修改属性值;* 7.case class最重要的功能,支持模式匹配,这也是定义case class的重要原因。** 三、case class 和 case object 区别:* 1.类中有参和无参,当类有参数的时候,用case class ,当类没有参数的时候那么用case object。** 四、当一个类被声名为case class的时候,scala会帮助我们做下面几件事情:* 1.构造器中的参数如果不被声明为var的话,它默认的话是val类型的,但一般不推荐将构造器中的参数声明为var* 2.自动创建伴生对象,同时在里面给我们实现子apply方法,使得我们在使用的时候可以不直接显示地new对象* 3.伴生对象中同样会帮我们实现unapply方法,从而可以将case class应用于模式匹配,关于unapply方法我们在后面的“提取器”那一节会重点讲解* 4.实现自己的toString、hashCode、copy、equals方法* 除此之此,case class与其它普通的scala类没有区别*/case class Iteblog(name:String)object TestScala {def main(args: Array[String]): Unit = {val iteblog = new Iteblog("iteblog_hadoop")val iteblog2 = Iteblog("iteblog_hadoop")println(iteblog == iteblog2)println(iteblog.hashCode)println(iteblog2.hashCode)}}

转载于:https://www.cnblogs.com/shimingjie/p/10374451.html

Scala中class、object、case class、case object区别相关推荐

  1. spark scala中的var 和val、def区别对比

    Val 和Var 的区别 一.最直观的就是:val定义的变量不能被再次赋值,而var定义的可以,见下图 scala> val s=10 s: Int = 10scala> s=11 < ...

  2. java建一个conversion,Scala中的JavaConverters和JavaConversions有什么区别?

    What is the difference between these two objects? Why do they both exist? When do I want to use one ...

  3. Scala中那些令人头痛的符号

    Scala中符号语法糖 初学Scala看到那些稀奇古怪的符号(e.g.   <: , >: ,  <%  ,  =:= , <:< ,  <%<,  +T, ...

  4. scala中apply和unapply方法

    apply方法 apply方法被称作注入方法,在类的伴生对象中做一个初始化操作 apply方法的参数列表不需要跟构造器的参数列表统一 apply方法是定义在伴生对象中的 当scala中类或者对象有一个 ...

  5. Scala模式匹配,case 字符串,case 匹配类型,case 匹配数组,case 匹配List,case 匹配元组,case匹配case class和case object

    一. 模式匹配和样例类 Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句.类型检查等. 并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配 1. 匹配字 ...

  6. Scala中 class和case class的区别

    在Scala中存在case class,它其实就是一个普通的class.但是它又和普通的class略有区别,如下: 1.初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new: scal ...

  7. scala中json与case class对象的转换, spark读取es json转换成case class

    ilinux_one scala中json与对象的转换 遇到的问题 因为要把spark从es读出来的json数据转换为对象,开始想用case class定义类型,通过fastjson做转换.如下 复制 ...

  8. Scala中Object和Class区别(伴生类和伴生对象)

    文章目录 一,介绍 二,类Class 2.1 类定义 2.2 构造器 1.基本语法 2.构造器参数 2.3 私有成员和Getter/Setter语法 三,单例对象Object 四,伴生对象和伴生类介绍 ...

  9. Scala中class与object区别

    calss scala编译器会字段帮我们生产一个私有字段和2个公有方法get和set scala 中没有 static 关键字,所以 对于一个class来说,所有的方法和成员变量在实例被 new 出来 ...

  10. scala中class与object区别.

    calss scala编译器会字段帮我们生产一个私有字段和2个公有方法get和set scala 中没有 static 关键字,所以 对于一个class来说,所有的方法和成员变量在实例被 new 出来 ...

最新文章

  1. 德州市公共资源交易平台大数据
  2. 怎样将jsonObject类型转换为date数据类型?
  3. C语言迷题:有符号数与无符号数的问题(转)
  4. win7开启uasp协议_UASP与USB模式切换工具(SwitchUA官方版下载_UASP与USB模式切换工具(SwitchUASP) v1.0免费版 - Win7旗舰版...
  5. java 判断数字变化增减_java String 强化操作 判断数字 字符串转阿拉伯数字,相似度等等...
  6. 【Pytorch神经网络基础理论篇】 08 Softmax 回归 + 损失函数 + 图片分类数据集
  7. 【报告分享】2020年中国金融科技企业领袖观点洞察报告.pdf(附下载链接)
  8. JSONHelper JSON帮助类
  9. selenium自动化测试配置工具整理
  10. imhist()函数使用
  11. S3存储服务间数据同步工具Rclone介绍
  12. Python网络爬虫数据采集实战:基础知识
  13. 8086指令系统中的寻址方式
  14. 【修色圣典】第一章 色彩、对比度和通道
  15. 人工智能这么火,你知道是谁创立的吗?
  16. 2所非211院校挺进全球高校600强,甩开一众985 | 泰晤士世界大学排行榜出炉
  17. 分布式计算原理之分布式协调与同步(1)——分布式事务
  18. 计算机网络(重点简单概括)
  19. 装机之 BIOS、EFI与UEFI详解
  20. 使用Hyper-V集群和存储功能以达到HA

热门文章

  1. [HDU5727]Necklace(二分图最大匹配,枚举)
  2. ACM程序设计选修课——1024: 末位零(求末尾0的方法+可有可无的快速幂)
  3. java中的Timer
  4. 解决在IE下“JSON”未定义的有关问题
  5. WMI 脚本入门:第二部分 (MSDN)
  6. win10+anaconda3+python3.7+pytorch-cpu安装
  7. 【linux】图解Linux最常用命令!秒懂!
  8. 读《scikiit-learn机器学习》支持向量机
  9. 每日算法系列【LeetCode 1004】最大连续1的个数 III
  10. seaborn—seaborn.distplot绘制直方图和连续密度统计