摘要:一、作为接口使用的特质 ### 作为接口使用的特质 ~~~ Scala中的trait特质是一种特殊的概念。 ~~~ 首先可以将trait作为接口来使用,此时的trait就与Java中的接口非常类似。 ~~~ 在trait中可以定义抽象方法,与抽象类中的抽象方法一样,只要不给出方法的具体实现即可。 ~
阅读全文
摘要:一、类型检查与转换 ### 类型检查与转换 ~~~ 要测试某个对象是否属于某个给定的类,可以用isInstanceOf方法。 ~~~ 如果测试成功,可以用asInstanceOf方法进行类型转换。 ### 编程示例 if(p.isInstanceOf[Employee]){ //s的类型转换为Emp
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、override方法重写 ### override ~~~ 方法重写指的是当子类继承父类的时候, ~~~ 从父类继承过来的方法不能满足子类的需要,子类希望有自己的实现, ~~~ 这时需要对父类的方法进行重写,方法重写是实现多态的关键。 ~~~ Scala中的方法重写同Java一样,也是利用ove
阅读全文
摘要:一、继承 ### 继承的概念 ~~~ Scala中继承类的方式和Java一样,也是使用extends关键字: class Employee extends Person{ var salary=1000 } ~~~ # 和Java一样,可在定义中给出子类需要而父类没有的字段和方法,或者重写父类的方法
阅读全文
摘要:一、构造器执行顺序 ### 构造器执行顺序 ~~~ Scala在继承的时候构造器的执行顺序:首先执行父类的主构造器,其次执行子类自身的主构造器。 ~~~ 类有一个主构造器和任意数量的辅助构造器, ~~~ 而每个辅助构造器都必须以对先前定义的辅助构造器或主构造器的调用开始。 ~~~ 子类的辅助构造器最
阅读全文
摘要:一、单例对象 ### 单例对象 ~~~ Scala并没有提供Java那样的静态方法或静态字段; ~~~ 可以采用object关键字实现单例对象,具备和Java静态方法同样的功能; ~~~ 使用object语法结构【object是Scala中的一个关键字】达到静态方法和静态字段的目的; ~~~ 对象本
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、构造器 ### 构造器 ~~~ 如果没有定义构造器,Scala类中会有一个默认的无参构造器; ~~~ Scala当中类的构造器分为两种:主构造器和辅助构造器; ~~~ 主构造器的定义与类的定义交织在一起,将主构造器的参数直接放在类名之后。 ~~~ 当主构造器的参数不用var或val修饰时,参数会
阅读全文
摘要:一、自定义getter和setter方法 ### 自定义getter和setter方法 ~~~ 对于 Scala 类中的每一个属性,编译后会有一个私有的字段和相应的getter、setter方法生成。 ~~~ getter方法 println(person age) ~~~ setter方法 per
阅读全文
摘要:一、Bean属性 ### Bean属性概述 ~~~ JavaBean规范把Java属性定义为一堆getter和setter方法。 ~~~ 类似于Java,当将Scala字段标注为 @BeanProperty时,getFoo和setFoo方法会自动生成。 ~~~ 使用@BeanProperty并不会影
阅读全文
摘要:一、类和无参构造器 ### 类和无参构造器 ~~~ 在Scala中,类并不用声明为public; ~~~ Scala源文件中可以包含多个类,所有这些类都具有公有可见性; ~~~ val修饰的变量(常量),值不能改变,只提供getter方法,没有setter方法; ~~~ var修饰的变量,值可以改变
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文
摘要:一、元组及操作 ### 元组及操作 ~~~ Tuple,元组。Map是键值对的集合。对偶是元组的最简单形态; ~~~ 元组是不同类型的值的集合,元组中的元素可以是不同的数据类型,元组在Scala中的应用非常广泛。 ### 编程示例 ~~~ # 报错,元组的元素个数上限是22个 val a = Tup
阅读全文
摘要:一、常见算法 ### 常见算法 ~~~ 在Scala中对数组进行转换非常简单方便,这些转换动作不会修改原始数组, ~~~ 而是产生一个全新的数组。 ~~~ 任务:将数组中偶数元素加倍,奇数元素丢弃 ### 编程示例 val arr = (1 to 10).toArray # -- 使用for推导式。
阅读全文
摘要:一、多维数组 ### 多维数组 ~~~ 通过Array的ofDim方法来定义一个多维的数组,多少行,多少列,都是自己说了算。 ### 多维数组示例 ~~~ # 创建一个3行4列的二维数组 val dim = Array.ofDim[Double](3,4) dim(1)(1) = 11.11 for
阅读全文
摘要:一、变长数组 ### 变长数组 ~~~ 长度按需要变换的数组ArrayBuffer。 ~~~ Scala 中很多数组类型都有可变、不可变两个版本, ~~~ 推荐使用不可变的数组类型,使用可变数组类型时需要显示声明; ~~~ 使用ArrayBuffer时,需要导包 import scala.colle
阅读全文
摘要:一、数组操作 ### 数组转换 ~~~ Array <==> BufferArray定长数组与变长数组转换 ~~~ toArray,变长数组转换为定长数组 val array: Array[Int]=nums.toArray ~~~ toBuffer,定长数组转换为变长数组 val arrayBuf
阅读全文
摘要:一、数组定义 ### 数组定义 ~~~ 数组几乎是所有语言中最基础的数据结构。数组可索引、类型一致、长度不变。 ### 编程示例 ~~~ # 长度为10的整型数组,初始值为0 val nums = new Array[Int](10) ~~~ # 使用()访问数据元素;下标从0开始 nums(9)
阅读全文
摘要:NO: Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of
阅读全文