Scala语言面向对象
apply1. 面向对象的基本概念:
把数据及对数据的操作方法放在一起,作为一个相互依存的整体-----对象,面向对象的三大特征:封装、多态、继承
2. scala类的定义
· class Emploee(name: String, age: Int)
*scala中定义类时无访问限制符public | protected | default | private
a.成员的getter和setter方法
类中的属性定义为private时会自动添加getter & setter方法
使用private val修饰只自动添加getter方法
使用private[this]修饰不添加getter & setter方法
b.类的构造器
类的主构造器只能有一,与类的声明结合在一起:class Emploee(name: String, age: Int)
类的从构造器可以有多个,用this关键字实现:def this(age: Int){ this("beichen", age)}
c.内部类的用法与java类似
3.scala中的object关键字
object相当于java中的static关键字,object内的成员都是静态的。main函数需要写在object对象内;当object对象与类名一致时称为该类的伴生对象,
类和类的伴生对象需定义在同一个源码文件中,它们可以相互访问对方的私有成员。
4. scala中的apply方法
apply方法的主要作用在于省略new关键字;


* apply方法定义在伴生对象中
5. abstract关键字修饰的类为抽象类,与java用法类似
6. trait特质,可以理解为支持多继承的抽象类

Ordered特质,可以用于比较对象大小,需要注意的是Ordered并未替对象实现equals方法,需要自定义。
7. 包与包对象
包的用法与java类似,package beichen.scala
由于java虚拟机的限制,包可以包含类、对象和特质,但不能包含函数或者变量的定义。
Scala中,包对象的出现正是为了解决这个局限。Scala中的包对象:常量,变量,方法,类,对象,trait(特质

8. 样本类case class
Scala的case class就是在普通的类定义前加case这个关键字,然后你可以对这些类来模式匹配。
模式匹配相当于java中的switch case语句,scala中的模式匹配功能更强大。

* _相当于default语句
scala模式匹配中的守卫,即在模式匹配中增加条件语句

样本类应用于模式匹配

Scala语言面向对象的更多相关文章
- Scala语言初识
scala是一种集面向对象特性和函数式特性于一身并可运行在JVM上的强类型静态语言.因为可以运行在JVM上,并在设计时借鉴于大量的java语言特性,故可以和java互动并可以调用java相关类库,这让 ...
- 关于学习Scala语言的一些感悟
进入话题! 我们知道哈,Spark源码采用Scala语言编写,那么阅读Spark源码之前,是否一定先学Scala呢? 我个人认为,不必,只要我们有一些java或c++编写语言的基础,就可以看Spaar ...
- Go 语言和 Scala 语言对比
我在Google写过Go(自己的业余时间),也在LinkedIn写过Scala.两者都是具有一流的并发特性的现代语言. 下面的回答是基于我编写大规模的软件的经验得出. Go是一种开发模式严格固定,并且 ...
- 大数据spark学习第一周Scala语言基础
Scala简单介绍 Scala(Scala Language的简称)语言是一种能够执行于JVM和.Net平台之上的通用编程语言.既可用于大规模应用程序开发,也可用于脚本编程,它由由Martin Ode ...
- 【福利】送Scala语言入门视频学习资料
没有套路真的是送!! 想要学好大数据,scala语言是必不可少的,spark和kafka等大数据重要组件都是用scala写的,想要彻底搞懂这些组件是如何运作的必须得看源码,而学习scala是看源码的必 ...
- Scala语言开发入门
在本系列的第一篇文章 <使用递归的方式去思考>中,作者并没有首先介绍 Scala 的语法,这样做有两个原因:一是由于过多的陷入语法的细节其中,会分散读者的注意力.反而忽略了对于基本概念,基 ...
- scala语言简介及其环境安装
scala语言简介及其环境安装 简介: 1.运行在JVM 上,兼容java语言 Scala的代码,都需要经过编译为字节码,然后交由Java虚拟机来运行.所以Scala和Java是可以无缝互操作的.Sc ...
- Scala语言简介和开发环境配置
Scala语言的简介和开发环境搭建 Scala是一门结合了面向对象特征和函数式编程特征的语言,它是一个创新的编程语言产品.Scala可以做脚本(就像shell脚本一样),可以做服务端编程语言,可以写数 ...
- Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈与熟练的掌握Scala语言【大数据Spark实战高手之路】
Spark GraphX宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机.平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题.图计算正在被广泛地应用于社交 ...
随机推荐
- Spark中的CombineKey()详解
CombineKey()是最常用的基于键进行聚合的函数,大多数基于键聚合的函数都是用它实现的.和aggregate()一样,CombineKey()可以让用户返回与输入数据的类型不同的返回值.要理解C ...
- CockroachDB学习笔记——[译]CockroachDB是如何进行分布式原子事务的
原文:How CockroachDB Does Distributed, Atomic Transactions 原文链接:https://www.cockroachlabs.com/blog/how ...
- CentOS7.5使用RPM包安装MySQL5.7.22
参考:https://blog.csdn.net/sevenkoala/article/details/76163853 1,安装环境查看 2,下载安装rpm包 下载地址:https://downlo ...
- python进阶--多线程多进程
一.线程和进程 进程是拥有独立内存,能够独立运行的最小单位,也是程序执行的最小单位,线程是程序运行过程中,一个单一的顺序控制流程,是程序执行流的最小单位,一个进程至少包含一个线程,多线程共享进程的内存 ...
- CSS - clearfix清除浮动
首先,我们来解释一下为什么要使用 clearfix(清除浮动). 通常我们在写html+css的时候,如果一个父级元素内部的子元素是浮动的(float),那么常会发生父元素不能被子元素正常撑开的情况, ...
- linux系统,CentOs7加新硬盘
1,打开Vmware软件,添加一块新的硬盘,然后一直下一步. 2.通过CRT等终端软件,连接到机器 [root@Mysql ~]# lsblk //检查一下硬盘分区信息 [root@Mysql ...
- 最新 迅雷java校招面经 (含整理过的面试题大全)
从6月到10月,经过4个月努力和坚持,自己有幸拿到了网易雷火.京东.去哪儿.迅雷等10家互联网公司的校招Offer,因为某些自身原因最终选择了迅雷.6.7月主要是做系统复习.项目复盘.LeetCode ...
- nginx 转发tcp连接
背景:公司有一套工作流服务(jira,confluence,bitbucket),目前jira,confluence配置的是从nginx网关进行转发,bitbucket配置的是直接解析到该主机,现在计 ...
- 记:linux服务器启动重启WEB项目启动成功,长时间卡住未响应
问题 云服务器部署web项目,每次正常启动项目后访问页面很久才能有响应,一直卡在INFO: Deploying web application directory ......长达几分钟以上,极度影响 ...
- Python基础总结之第七天开始【总结字符串、列表、元组的常用方法】(新手可相互督促)
前面的笔记说,python中的一切数据类型都是对象 我们在细化下就是:对象可由两部分组成:对象数据和对象方法 针对不同类型的数据对象,有不同的操作对象的方法. 那么我们开始看下字符串对象的常用方法: ...