Scala中class、object、case class、case object区别
/** 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区别相关推荐
- spark scala中的var 和val、def区别对比
Val 和Var 的区别 一.最直观的就是:val定义的变量不能被再次赋值,而var定义的可以,见下图 scala> val s=10 s: Int = 10scala> s=11 < ...
- 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 ...
- Scala中那些令人头痛的符号
Scala中符号语法糖 初学Scala看到那些稀奇古怪的符号(e.g. <: , >: , <% , =:= , <:< , <%<, +T, ...
- scala中apply和unapply方法
apply方法 apply方法被称作注入方法,在类的伴生对象中做一个初始化操作 apply方法的参数列表不需要跟构造器的参数列表统一 apply方法是定义在伴生对象中的 当scala中类或者对象有一个 ...
- Scala模式匹配,case 字符串,case 匹配类型,case 匹配数组,case 匹配List,case 匹配元组,case匹配case class和case object
一. 模式匹配和样例类 Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句.类型检查等. 并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配 1. 匹配字 ...
- Scala中 class和case class的区别
在Scala中存在case class,它其实就是一个普通的class.但是它又和普通的class略有区别,如下: 1.初始化的时候可以不用new,当然你也可以加上,普通类一定需要加new: scal ...
- scala中json与case class对象的转换, spark读取es json转换成case class
ilinux_one scala中json与对象的转换 遇到的问题 因为要把spark从es读出来的json数据转换为对象,开始想用case class定义类型,通过fastjson做转换.如下 复制 ...
- Scala中Object和Class区别(伴生类和伴生对象)
文章目录 一,介绍 二,类Class 2.1 类定义 2.2 构造器 1.基本语法 2.构造器参数 2.3 私有成员和Getter/Setter语法 三,单例对象Object 四,伴生对象和伴生类介绍 ...
- Scala中class与object区别
calss scala编译器会字段帮我们生产一个私有字段和2个公有方法get和set scala 中没有 static 关键字,所以 对于一个class来说,所有的方法和成员变量在实例被 new 出来 ...
- scala中class与object区别.
calss scala编译器会字段帮我们生产一个私有字段和2个公有方法get和set scala 中没有 static 关键字,所以 对于一个class来说,所有的方法和成员变量在实例被 new 出来 ...
最新文章
- 德州市公共资源交易平台大数据
- 怎样将jsonObject类型转换为date数据类型?
- C语言迷题:有符号数与无符号数的问题(转)
- win7开启uasp协议_UASP与USB模式切换工具(SwitchUA官方版下载_UASP与USB模式切换工具(SwitchUASP) v1.0免费版 - Win7旗舰版...
- java 判断数字变化增减_java String 强化操作 判断数字 字符串转阿拉伯数字,相似度等等...
- 【Pytorch神经网络基础理论篇】 08 Softmax 回归 + 损失函数 + 图片分类数据集
- 【报告分享】2020年中国金融科技企业领袖观点洞察报告.pdf(附下载链接)
- JSONHelper JSON帮助类
- selenium自动化测试配置工具整理
- imhist()函数使用
- S3存储服务间数据同步工具Rclone介绍
- Python网络爬虫数据采集实战:基础知识
- 8086指令系统中的寻址方式
- 【修色圣典】第一章 色彩、对比度和通道
- 人工智能这么火,你知道是谁创立的吗?
- 2所非211院校挺进全球高校600强,甩开一众985 | 泰晤士世界大学排行榜出炉
- 分布式计算原理之分布式协调与同步(1)——分布式事务
- 计算机网络(重点简单概括)
- 装机之 BIOS、EFI与UEFI详解
- 使用Hyper-V集群和存储功能以达到HA
热门文章
- [HDU5727]Necklace(二分图最大匹配,枚举)
- ACM程序设计选修课——1024: 末位零(求末尾0的方法+可有可无的快速幂)
- java中的Timer
- 解决在IE下“JSON”未定义的有关问题
- WMI 脚本入门:第二部分 (MSDN)
- win10+anaconda3+python3.7+pytorch-cpu安装
- 【linux】图解Linux最常用命令!秒懂!
- 读《scikiit-learn机器学习》支持向量机
- 每日算法系列【LeetCode 1004】最大连续1的个数 III
- seaborn—seaborn.distplot绘制直方图和连续密度统计