大数据学习之Scala面向对象41

20Scala面向对象

Scala的面向对象

我们要封装数据,定义模板等操作,所以我们需要面向对象。

1)scala中的单例对象

scala当中,是没有static的,scala给我们提供了单例模式的实现方法。就是使用

关键字object。

static在java中修饰属性和方法,目的是直接类名.进行调用。

 

2)scala类与构造器的使用

scala中主构造器:

定义在类名后面的构造器叫主构造器

 

如果主构造器中成员变量属性没有被val var修饰的话,该属性不能被访问
相当于java中没有对外提供get方法

如果成员属性使用var修饰的话,相当于java中对外提供了get方式和set方式
如果成员属性使用val修饰的话,相当于java中对外只提供了get方式

scala辅助构造器:

定义在class类中,可以有多个辅助构造器

 

测试结果:

 

3)构造器的访问权限

在主构造器或者辅助构造器前加上private修饰符即可

 

构造该对象时就会报错

 

4)类的访问权限

 

直接在类的前面加上private[this]即可

 

[this]代表当前包下的都可以访问,其他任何包都不可以访问包括子包,默认也就是this

[demo]类的前面如果加上包名,表示当前类在当前包及其子包可见,可以访问

 

当前包测试,使用this

其他包下就会报错!!!!  

使用 [包名]

类的前面如果加上包名,表示当前类在当前包及其子包可见,可以访问

 

 

5)伴生对象

 

什么是伴生对象? 单例类名与类名相同

 

在伴生对象中可以访问类的私有成员方法和属性

 

 

6)  特质

相当于java中Interface接口,trait就是抽象类trait跟抽象类最大的区别:trait支持多重继承

 

一般情况

 

编写Animal

编写Pig

 

 

混入特质

就加一个with

 

7)抽象类

就在class前面加一个abstract

继承抽象类可以再继承特质 但是抽象类写在前 with连接

 

8)模式匹配 match case

 

posted @ 2019-06-16 17:42  大魔王阿黎  阅读(127)  评论(0编辑  收藏  举报