scala中的一切皆对象
单纯从面向对象的角度来看待scala,可以说scala就是一门纯面向对象的编程语言,因为在scala中,一切都可以看做是对象。
这点和java是不同的,java中区分基本数据类型和引用类型。可以说scala比Java的面向对象理念还彻底!
数字对象
scala> 5210000 + 1 *1024 / 1
res0: Int = 5211024
scala> (5210000).+(((1).*(1024))./(1))
res1: Int = 5211024
在java中第一行就是基本的运算,但是scala中认为一切皆是对象,所以每个数字都可以被当一个对象来处理,所以写成第二种写法的出来的结论是一样的。
注:如果写成1.+2会被scala编译器当做Double+Int处理。
类型对象
对于Boolean或者其他类型都可以被重写。
abstract class Boolean2 {
//same as: if(cond) t else e
def ifThenElse[T](t: => T,