一、类

1.类的定义

Unit表示什么都不返回

方法体最后一句的值,就是方法的返回值。

2.类成员的可见性

3.方法的定义方式

定义方法的时候加圆括号,调用时可以加圆括号c.getValue()也可以不加圆括号c.getValue;

定义方法的时候不加圆括号,调用时不可以加圆括号。

4.(类)构造器

和Java区别在于,scala可以在类的名称后面圆括号里面直接给出一些参数,而且构造器里面的参数加了val或var关键字去修饰,系统会自动把它变成自己内部的成员字段,并且提供get和set方法;如果没有加val或var关键字,那么它不会变成一个内部字段,只是简单的起到往里传参的作用,不会生成内部成员。

二、对象

1.单例对象(singleton object)

2.apply方法

apply方法是Scala中独有的

如果定义了类的apply方法,当你给这个类生成一个实例,用这个实例名称()括起来,给他传递参数的时候,它会自动去调用它的apply方法。

3.update方法

4.unapply方法

根据已有对象,提取出对象的参数。

主函数的第一条语句:先执行右边调用apply函数,再执行左边调用unapply函数

三、继承

1.抽象类

抽象字段:只定义,没有初始化值

抽象方法:只定义方法,没有实现方法体

2.扩展类

  • 重载父类的抽象成员override关键字是可选的,例如:子类实现父类中的一些抽象成员或者把原来的字段给覆盖了,这个override是可选的。
  • 重载父类的非抽象成员override关键字必须要写
  • 只能重载val类型字段,不能重载var字段

举例:

Scala类的顶层是一个叫Any的抽象类,所有的类都是从这里继承下来的。

从Any类派生出两个子类:AnyVal和AnyRef,AnyVal保存在寄存器中,不能实例化;AnyRef保存在堆中,可以实例化;Null是所有引用类型的子类型

3.Option类

Option类是一个抽象类,它有个子类叫Some子类,

当不确定类的返回值是否为空时,可以将返回值类型设置为Option;如果无返回值时,返回None,有返回值时,会封装到Some对象中返回来。

举例:

四、特质

Scala的特质类似于Java中的接口,不仅实现了接口的功能,还可以定义其他特性;

举例1:

举例2:一个类继承父类且混入多个特质

五、模式匹配

scala中case语句后面不需要加break,每次执行一个case,会自动退出。

自动调用半生对象的apply方法生成实例

第三个case Car的功能是把当前传进来的值提取出来,提取出来之后打印println

六、包

举例:

参考文献:

【1】Spark编程基础_中国大学MOOC(慕课)

最新文章

  1. MySQL关于exists的一个bug
  2. BZOJ 3156 防御准备
  3. Apache Kafka源码分析 - kafka controller
  4. mysql 之权限介绍
  5. 对ContentProvider中getType方法的一点理解
  6. Nuget 自动上传
  7. pecl/mongo is already installed
  8. params参数的使用方法
  9. PHP获取客户端操作系统,浏览器,语言,IP,IP归属地等
  10. jquery之stop()的用法
  11. 几家SIEM
  12. Android(Lollipop/5.0) Material Design(六) 自定义动画
  13. 浅谈python 复制(深拷贝,浅拷贝)
  14. include指令和include动作
  15. JavaScript Window History
  16. orcal - 子查询
  17. mongodb查询的语法(大于,小于,大于或等于,小于或等于等等)
  18. VB.NET 窗體操作
  19. 关于ajax原理介绍
  20. Apache Tika

热门文章

  1. PHP 安装xdebug
  2. 【bzoj2648】SJY摆棋子(kdtree)
  3. SQL(一)简介
  4. 攻防世界pwn之新手区
  5. Markdown & LaTex 常用语法
  6. 【Spring AOP】AOP实现原理(六)
  7. Linux学习笔记-第12天 实用的一章
  8. nodejs 连接MySQL后,输出数据带有RowDataPacket、中括号大括号怎么去掉?
  9. JSX中引用CSS的一种方法
  10. CSP-J&S2019前颓废记