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宝刀出鞘,图文并茂研习图计算秘笈 大数据的概念与应用,正随着智能手机.平板电脑的快速流行而日渐普及,大数据中图的并行化处理一直是一个非常热门的话题.图计算正在被广泛地应用于社交 ...
随机推荐
- [C++]Yellow Cards - GYM - 102348A(Practice *) - CodeForces
1 Problem Description Problem The final match of the Berland Football Cup has been held recently. Th ...
- 【计算机视觉】MTCNN基于NCNN的测试过程
前言 操作过程 NCNN: https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux-x86; vector初始化: int ...
- GitHub快速搭建个人博客
> 正所谓前人栽树,后人乘凉.> > 感谢[Huxpro](https://github.com/huxpro)提供的博客模板> > [我的的博客](https://fl ...
- 卸载未能成功安装的mysql时的解决方案
在win10系统中,首次未能成功安装mysql,于是试图卸载了mysql相关的应用,结果提示有卸载未完成的应用,无法卸载, 在阅读文档之后发现,可以在任务管理器中的详细信息中找到[dllhost.ex ...
- 产品之我见(1)-女性APP
我曾下载过几款女性APP,下载的初衷是想要记录.同时预估下一次生理周期开始的时间. 在查找网上测评推荐及个人下载试用了四五款后,我当时留下美柚.大姨吗.Clue这三款. 美柚 ...
- pytest.mark.parametrize()参数化应用二,读取json文件
class TestEnorll(): def get_data(self): """ 读取json文件 :return: """ data ...
- 【ARM-Linux开发】Linux链接 -ln
ln命令是Linux中的一个非常重要的命令,它为一个文件在另一位置创建同步链接,有两种:符号链接和硬链接. [ln命令详解]ln [options] source dist 常用参数: -f : 链接 ...
- 【DSP开发】帮您快速入门 TI 的 Codec Engine
德州仪器半导体技术(上海)有限公司 通用DSP 技术应用工程师 崔晶 德州仪器(TI)的第一颗达芬奇(DaVinci)芯片(处理器)DM6446已经问世快三年了.继DM644x之后,TI又陆续推出了D ...
- mysql 不支持group by的解决方案
进入mysql命令行 执行如下两句语句 set global sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_ ...
- 1、spring mvc jsp页面中文乱码
jsp 页面头部 的page标签中加个 contentType="text/html;charset=utf-8"