Scala语言(三)

面向对象基础

Scala语言(三)

Scala语言(三)

Scala语言(三)

当什么都不返回的时候,返回的值的类型叫Unit

 

Scala语言(三)

实例化

Scala语言(三)

 

Scala语言(三)Scala语言(三)

Scala和Java一样,建议不要直接去暴露public字段,设置为私有,也提供了getter和setter方法,帮你读取和写入变量值

但getter和setter的实现和Java有点不太一样

Scala语言(三)

这里的value_=是一个方法名称,可不是一个赋值的概念

Scala语言(三)

Scala语言(三)

Scala语言(三)

没有参数的方法在定义的时候是可以把圆括号省略掉的

Scala语言(三)

如果定义的时候把括号省略,那么后面调用的时候一定也不能加括号(如果定义的时候又括号,那么调用的时候可省略也可以带着)

并且这里的圆括号也可以用大括号{}来代替

Scala语言(三)

Scala语言(三)

Scala语言(三)

如果整个方法体只有一条语句,也可以把大括号省略掉

Scala语言(三)

Scala语言(三)

当方法的返回结果类型可以从表达式推断出来的时候,可以省略结果的类型,不用再改方法名后面写个冒号属于什么类型

Scala语言(三)

 

构造器

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

Scala语言(三)Scala语言(三)

Scala语言(三)

Scala语言(三)

Scala语言(三)Scala语言(三)Scala语言(三)Scala语言(三)Scala语言(三)Scala语言(三)

运行

Scala语言(三)

 

对象(单例对象)

Scala语言(三)

这些都是Scala特有的

 

Scala语言(三)

Scala语言(三)

所有定义到单例对象当中的字段、方法都是静态的

Scala语言(三)Scala语言(三)Scala语言(三)Scala语言(三)Scala语言(三)Scala语言(三)

 

Scala语言(三)

互相能访问对方内部的成员变量和成员方法

Scala语言(三)Scala语言(三)Scala语言(三)

 

apply方法

声明数组的时候Java和Scala的区别

Scala语言(三)Scala语言(三)Scala语言(三)Scala语言(三)Scala语言(三)

实际上就称为工厂,会不断生成新的类的对象

Scala语言(三)

那么Scala为什么不像Java那样new一个对象然后生成实例呢

是为了保持对象和函数的一致性

Scala语言(三)

Scala融合面向对象和函数式编程两种风格

Scala语言(三)

括号调用是函数调用

点方法是面向对象方法

Scala语言(三)

同理,Scala对象也可以被看做是函数

如果类中已经定义了apply方法的话,就可以转换成函数式的调用风格

函数式方法可以在后台自动给你转成对象方法,因为有了apply调用

Scala语言(三)

 

update和unapply方法

Scala语言(三)