大数据系列修炼-Scala课程54

大数据系列修炼-Scala课程54

核心内容:
1、Scala中复合类型实战详解

1、Scala中复合类型操作代码实战

1> A extends B with C with D 的语法含义:A类型是一个复合的数据类型,既是B又是C又是D的子类型,即要求A既具有
B、又具有C、又具有D的功能。Java中的语法解读不同于此。
2>Scala中的_with_with_with这种复合的数据类型符合实际应用的场景。
3>通过type关键字可以引用抽象方法,字段和类型。
4>Scala中的复合数据类型就是通过组合其它类型来构造具体的类型,这种组合而成的新类型称为复合数据类型。

实例程序:

trait A
trait B
class C extends A with B //C看做复合的数据类型,即class C extends (A with B)
class D extends A with B
{
   def g()={println("Scala and Java")}
}
object App 
{  
   def main(args:Array[String]):Unit=      
   {  
      def fun1(x:A with B)= println("要求形式参数x是一个复合的数据类型!")
      val cc = new C()
      fun1(cc)
      fun1(new A with B)  //传进来一个匿名类对象
      //利用type关键字代表一种复合的数据类型
      type t1 = A with B
      def fun2(y:t1) = println("这里使用了type关键字!")
      object D extends A with B //将AB的特质混入到D
      fun2(D)
      //复合数据类型与结构类型进行组合使用
      type t2 = A with B {def g():Unit} //即要求t2具有A的功能,又具有B的功能,同时具有实现的g方法
      def fun3(z:t2) = println("复合数据类型与结构类型进行组合使用")
      fun3(new D())   
   }
}

运行结果:

要求形式参数x是一个复合的数据类型!
要求形式参数x是一个复合的数据类型!
这里使用了type关键字!
复合数据类型与结构类型进行组合使用

深度思考1:
在前面的泛型变量的上下界当中: A <: B with C 含义:A是B或者是C的子类型
本讲中: class A extends B with C 含义:A必须是B并且是C的子类型 呵呵:弥补缺陷了呢!!!
大数据系列修炼-Scala课程54_第1张图片
如有问题,欢迎留言指正!

你可能感兴趣的:(scala,大数据)