一、类

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(慕课)

2.3 Scala面向对象编程基础的更多相关文章

  1. 6. Scala面向对象编程(基础部分)

    6.1 基本介绍 6.1.1 Scala语言是面向对象的 1) Java时面向对象的编程语言,由于历史原因,Java中海存在着非面向对象的内容:基本类型,null,静态方法等 2) Scala语言来自 ...

  2. 大数据技术之_16_Scala学习_04_函数式编程-基础+面向对象编程-基础

    第五章 函数式编程-基础5.1 函数式编程内容说明5.1.1 函数式编程内容5.1.2 函数式编程授课顺序5.2 函数式编程介绍5.2.1 几个概念的说明5.2.2 方法.函数.函数式编程和面向对象编 ...

  3. 第二章 Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  4. [.net 面向对象编程基础] (1) 开篇

    [.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...

  5. [Java入门笔记] 面向对象编程基础(二):方法详解

    什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能上来看,方法都有点类似与函数.但是,方法与传统的函数还是有着不同之处: 在 ...

  6. [.net 面向对象编程基础] (2) 关于面向对象编程

    [.net 面向对象编程基础]  (2)  关于面向对象编程 首先是,面向对象编程英文 Object-Oriented Programming 简称 OOP 通俗来说,就是 针对对象编程的意思 那么问 ...

  7. [.net 面向对象编程基础] (3) 基础中的基础——数据类型

    [.net 面向对象编程基础] (3) 基础中的基础——数据类型 关于数据类型,这是基础中的基础. 基础..基础..基础.基本功必须要扎实. 首先,从使用电脑开始,再到编程,电脑要存储数据,就要按类型 ...

  8. [.net 面向对象编程基础] (4) 基础中的基础——数据类型转换

    [.net面向对象编程基础] (4)基础中的基础——数据类型转换 1.为什么要进行数据转换? 首先,为什么要进行数据转换,拿值类型例子说明一下, 比如:我们要把23角零钱,换成2.30元,就需要把整形 ...

  9. [.net 面向对象编程基础] (5) 基础中的基础——变量和常量

    [.net面向对象编程基础]  (5) 基础中的基础——变量和常量 1.常量:在编译时其值能够确定,并且程序运行过程中值不发生变化的量. 通俗来说,就是定义一个不能改变值的量.既然不能变动值,那就必须 ...

随机推荐

  1. 04webpack--webpack-dev-server 时时跟新

    <!-- 如何添加npm run dev 启动程序 下载npm i webpack-dev-server -S 在pack.json中添加 "dev": "webp ...

  2. 01day-webpack

    <!-- .sass后缀的文件名 比较老了 现在它的后缀名是.scss 其实他们是同一个东西 只是 后缀名发生了变化 以 .sass写的文件的内容是 他没有括号 没有分号 有点怪 它跟新为了.s ...

  3. 2. Linux文件与目录管理

    一.目录与路径 1. 相对路径与绝对路径 绝对路径:路径写法[一定由根目录 / 写起],如:/usr/share/doc 相对路径:路径写法[不由 / 写起], /usr/share/doc 要到 / ...

  4. GraphSage:

    https://yq.aliyun.com/articles/712465?type=2 讲了最基本的概念: 1.b.常见的欧几里得结构化数据 将数据转换到欧几里得空间中,所得到的数据称为欧几里得结构 ...

  5. 剑指Offer-7.斐波那契数列(C++/Java)

    题目: 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0). n<=39 分析: 斐波那契数列是0,1,1,2,3,5,8,13...也就是当前 ...

  6. JDOJ3004 超级楼梯

    JDOJ3004 超级楼梯 https://neooj.com/oldoj/problem.php?id=3004 题目描述 有一个超级楼梯共N级,刚开始时你在第一级,若每次只能跨上一级或两级,要走上 ...

  7. 树莓派4b+linux

    用Win32DiskImager烧录系统 先在boot根目录下新建ssh空文件夹来开启ssh功能,否则ssh是关闭的,用putty一直连不上,显示拒绝连接 1.联网: 初次 (实践证明:直接在sd卡根 ...

  8. vue.js 使用 v-text 和 v-html

    v-text:转义输出 v-html:不转义输出 值得一说的是 如果直接使用{{html}}的话会直接转义 看代码: <!doctype html> <html lang=" ...

  9. vscode配置python环境-运行调试-windows环境

    官方文件介绍 https://code.visualstudio.com/docs/languages/python 准备: vscode下载安装 python3版本下载(安装时可以选择添加环境变量, ...

  10. Hbase 多条件查询

    /** * 获得相等过滤器.相当于SQL的 [字段] = [值] * @param cf 列族名 * @param col 列名 * @param val 值 * @return 过滤器 */ pub ...