一、类

1.类的定义

2.3 Scala面向对象编程基础_scala

 Unit表示什么都不返回

2.3 Scala面向对象编程基础_ide_02

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

2.3 Scala面向对象编程基础_scala_03 

2.类成员的可见性

2.3 Scala面向对象编程基础_scala_04 

2.3 Scala面向对象编程基础_子类_05

2.3 Scala面向对象编程基础_ide_06

2.3 Scala面向对象编程基础_字段_07

2.3 Scala面向对象编程基础_ide_08

3.方法的定义方式

2.3 Scala面向对象编程基础_字段_09

2.3 Scala面向对象编程基础_子类_10

2.3 Scala面向对象编程基础_字段_11

2.3 Scala面向对象编程基础_父类_12

2.3 Scala面向对象编程基础_子类_13

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

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

2.3 Scala面向对象编程基础_子类_14

2.3 Scala面向对象编程基础_scala_15

2.3 Scala面向对象编程基础_scala_16

4.(类)构造器

2.3 Scala面向对象编程基础_子类_17

2.3 Scala面向对象编程基础_scala_18

2.3 Scala面向对象编程基础_字段_19

2.3 Scala面向对象编程基础_子类_20

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

 2.3 Scala面向对象编程基础_ide_21

2.3 Scala面向对象编程基础_ide_22 

2.3 Scala面向对象编程基础_字段_23

2.3 Scala面向对象编程基础_父类_24

2.3 Scala面向对象编程基础_scala_25

2.3 Scala面向对象编程基础_scala_26 

2.3 Scala面向对象编程基础_字段_27

2.3 Scala面向对象编程基础_子类_28

2.3 Scala面向对象编程基础_scala_29

二、对象

2.3 Scala面向对象编程基础_scala_30

1.单例对象(singleton object)

2.3 Scala面向对象编程基础_ide_31

2.3 Scala面向对象编程基础_子类_32 

2.3 Scala面向对象编程基础_字段_33

2.3 Scala面向对象编程基础_字段_34

2.3 Scala面向对象编程基础_ide_35

2.3 Scala面向对象编程基础_字段_36

2.3 Scala面向对象编程基础_字段_37

2.3 Scala面向对象编程基础_父类_38

2.3 Scala面向对象编程基础_scala_39

2.3 Scala面向对象编程基础_ide_40 

2.3 Scala面向对象编程基础_父类_41

2.3 Scala面向对象编程基础_scala_42

2.apply方法

apply方法是Scala中独有的

2.3 Scala面向对象编程基础_字段_43

2.3 Scala面向对象编程基础_字段_44

2.3 Scala面向对象编程基础_scala_45

2.3 Scala面向对象编程基础_scala_46

2.3 Scala面向对象编程基础_子类_47

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

2.3 Scala面向对象编程基础_父类_48

2.3 Scala面向对象编程基础_子类_49

2.3 Scala面向对象编程基础_ide_50

 2.3 Scala面向对象编程基础_父类_51

2.3 Scala面向对象编程基础_字段_52

2.3 Scala面向对象编程基础_ide_53

2.3 Scala面向对象编程基础_父类_54

2.3 Scala面向对象编程基础_子类_55  

3.update方法

2.3 Scala面向对象编程基础_ide_56

2.3 Scala面向对象编程基础_scala_57

4.unapply方法

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

2.3 Scala面向对象编程基础_字段_58

2.3 Scala面向对象编程基础_子类_59

2.3 Scala面向对象编程基础_子类_60

2.3 Scala面向对象编程基础_ide_61

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

 

三、继承

2.3 Scala面向对象编程基础_ide_62 

1.抽象类

2.3 Scala面向对象编程基础_scala_63

2.3 Scala面向对象编程基础_父类_64

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

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

2.3 Scala面向对象编程基础_父类_65

 

2.3 Scala面向对象编程基础_父类_66

2.扩展类

2.3 Scala面向对象编程基础_子类_67

2.3 Scala面向对象编程基础_字段_68

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

2.3 Scala面向对象编程基础_子类_69

举例:

2.3 Scala面向对象编程基础_父类_70

2.3 Scala面向对象编程基础_ide_71

2.3 Scala面向对象编程基础_ide_72 

2.3 Scala面向对象编程基础_父类_73

2.3 Scala面向对象编程基础_字段_74

2.3 Scala面向对象编程基础_ide_75

2.3 Scala面向对象编程基础_父类_76

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

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

3.Option类

2.3 Scala面向对象编程基础_父类_77

 

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

2.3 Scala面向对象编程基础_ide_78

 

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

举例:

2.3 Scala面向对象编程基础_字段_79

2.3 Scala面向对象编程基础_父类_80

四、特质

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

2.3 Scala面向对象编程基础_ide_81

2.3 Scala面向对象编程基础_字段_82

2.3 Scala面向对象编程基础_子类_83

2.3 Scala面向对象编程基础_ide_84

举例1:

2.3 Scala面向对象编程基础_子类_85

2.3 Scala面向对象编程基础_父类_86

2.3 Scala面向对象编程基础_ide_87

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

2.3 Scala面向对象编程基础_字段_88

2.3 Scala面向对象编程基础_子类_89

2.3 Scala面向对象编程基础_子类_90

五、模式匹配

2.3 Scala面向对象编程基础_scala_91

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

2.3 Scala面向对象编程基础_ide_92

2.3 Scala面向对象编程基础_ide_93

2.3 Scala面向对象编程基础_scala_94

2.3 Scala面向对象编程基础_子类_95

2.3 Scala面向对象编程基础_子类_96

2.3 Scala面向对象编程基础_父类_97

2.3 Scala面向对象编程基础_父类_98

2.3 Scala面向对象编程基础_scala_99

2.3 Scala面向对象编程基础_字段_100

2.3 Scala面向对象编程基础_scala_101

2.3 Scala面向对象编程基础_父类_102 

2.3 Scala面向对象编程基础_父类_103

2.3 Scala面向对象编程基础_ide_104

2.3 Scala面向对象编程基础_父类_105

2.3 Scala面向对象编程基础_子类_106

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

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

六、包

2.3 Scala面向对象编程基础_scala_107

2.3 Scala面向对象编程基础_scala_108

举例:

2.3 Scala面向对象编程基础_字段_109

2.3 Scala面向对象编程基础_字段_110

2.3 Scala面向对象编程基础_子类_111

 

 

 

 

 

参考文献:

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