20:Scala面向对象
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连接