【Spark编程基础(2.3)】Scala语言基础—面向对象编程基础

跟風遠走 提交于 2020-03-01 05:25:35

3 面向对象编程基础


类的定义
在这里插入图片描述
在这里插入图片描述
什么都不返回:Unit
在这里插入图片描述
在这里插入图片描述
类成员的可见性
默认公有,其他private(本类型和嵌套类型),protected(本类型和继承类型)
封装,声明私有,getter,setter方法
私有变量,读取value=和写入value_=
在这里插入图片描述
方法的定义方式
在这里插入图片描述
参数不能用var,val去修饰;一个方法如果只有一个参数可以省略圆点而采用中缀操作符调用方法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
构造器
类主体,主构造器,类名(参数列表),可以用val和var修饰,参数自动编程类内部成员字段;
在这里插入图片描述
辅助构造器,调用形式:This(参数列表),辅助构造器第一个表达式需要调用此前已经定义的辅助构造器或者主构造器;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对象
单例对象,静态成员变量,不需要实例化
用object关键字定义。
在这里插入图片描述
在这里插入图片描述
单例对象分为伴生对象和孤立对象
伴生对象
在这里插入图片描述
鼓励对象
在这里插入图片描述
在这里插入图片描述
可以互相访问内部的方法和成员
在这里插入图片描述
apply方法,Scala当中独有的
apply方法调用约定:

  • 用括号传递给类实例或单例对象名一个或多个参数时
  • Scala会在相应的类或对象中查找方法名为apply
  • 且参数列表与传入的参数一致的方法
  • 并用传入的参数来调用该apply方法
    在这里插入图片描述
    Scala调用Array类的伴生对象的apply方法
    Java中创建数组
    在这里插入图片描述
    测试apply是否调用
    在这里插入图片描述
    在这里插入图片描述
    apply方法不断构造对象
  • 一个class一个类
  • 给类定义一个伴生对象
  • 类的构造方法以apply方法的形式写在伴生对象中
  • 伴生对象的方案会被自动调用
  • 调用会自动生成类对象

在这里插入图片描述
保持对象和函数之间一致性,实现点方法与括号调用的统一。
面向对象:对象.方法;函数式:函数名称(参数)
在这里插入图片描述
update方法
调用约定:

  • 当对带有括号并包括一到若干参数的对象进行赋值时编译器将调用对象的update方法
  • 并将括号里的参数和等号右边的值一起作为update方法的输入参数来执行调用
    在这里插入图片描述
    unapply方法
    给一个对象,提取参数,反向解析的过程。
    在这里插入图片描述
    继承
    抽象类
    类中没有实现的成员(可以定义实现的方法),需要用abstract关键字修饰;定义抽象类的抽象方法不需要使用关键字abstract;抽类中定义的字段没有给出初始值,需要给出类型声明。
    在这里插入图片描述
    扩展类
    extends关键字。重载父类的抽象成员,override关键字可选;重载父类的非抽象成员,关键字必须;只能重载val类型字段。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    Scala的类层次结构

在这里插入图片描述
Nothing没有实例。

Option类
Some对象,所有以Option为返回值的都返回一个Some对象;
None对象,当返回空的时候。
在这里插入图片描述
case class自动实现一个apply方法。
在这里插入图片描述
在这里插入图片描述

特质,Scala当中特有概念,与Java接口类似,不仅实现了接口功能,即可以定义抽象方法,还可以提供具体的方法实现;特质是混入,重用特质中的一些方法字段,间接实现多重继承。

用with和extends混入(mixin)到类中
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
模式匹配

match语句
switch-case结构
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
不仅可以匹配特定常量还可以匹配某个类型的所有值。
在这里插入图片描述
在这里插入图片描述
可以添加守卫。
在这里插入图片描述
case类,经过优化的,用于模式匹配
case class,会自动重载许多实用方法,如toString、equals和hashcode等;并为每个case类生成一个伴生对象,有apply工厂方法和unapply方法。
在这里插入图片描述
自动生成伴生对象,其中包含apply和unapply方法。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

包,解决程序中命名冲突

在这里插入图片描述
包之外,必须引用autodepartment.MyClass
不同包可以嵌套。
在这里插入图片描述
在这里插入图片描述
通配符下划线(等价于Java中的*)
在这里插入图片描述
Scala隐式添加
在这里插入图片描述

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!