DT大数据梦工厂 温故而知新 之14讲

王家林亲授 大数据开发语言《Scala深入浅出实战经典》(1-71讲全部视频、代码、PPT)下载 ,总共有140讲Scala视频!
百度云: http://pan.baidu.com/s/1jGjFpWy
腾讯微云: http://url.cn/TnGbdC

360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2


DT大数据梦工厂 温故而知新 之14讲scala 中的特质的使用


package TestPractice


/**
 * @author Administrator
 */
object TraitDemo {
  def main(args: Array[String]): Unit = {
     
    var animal: Animal = new Dog1
    println(animal.name + "\t" + animal.age + "\t" + animal.weight)
    animal.sleep
    animal.run




    println("*****************************************")
    animal = new Cat1
    println(animal.name + "\t" + animal.age + "\t" + animal.weight)
    animal.sleep
    animal.run
  }
  
}

//定义一个trait,代表一种特质,可以将它理解为java8中的接口
//特质是抽象的概念是不能直接创建实例的
trait Animal {
  //特质中定义了两个抽象的成员字段
  val name: String
  //特质中定义了一个具体的成员字段
  val weight = 18
  var age: Int


  //特质中可以有具体方法
  def sleep(): Unit = {
    println("animal runing... !")
  }


  //特质中也可以有抽象的方法
  def run
}


//一个类去继承一个特质,就用有了这个特质的方法和字段
class Dog1 extends Animal {
  //特质中的抽象变量必须被重写,不然类要变成抽象类,override可以省略
  override val name: String = "wangcai"
  override var age: Int = 3


  //特质中的抽象方法要被重写,不然类要变成抽象类,override可以省略
  override def run: Unit = {
    println("dog runing...")
  }
}


//一个类必须先extends一个类后,才能with一个特质
class Cat1 extends Object with Animal {
  //特质中的抽象变量必须被重写,不然类要变成抽象类,override可以省略
  override val name: String = "ketty"
  override var age: Int = 5


  //特质中的抽象方法要被重写,不然类要变成抽象类,override可以省略
  override def run: Unit = {
    println("cat running ......")
  }
}

总结: trait类似于java8中的接口 ,特质是抽象的概念是不能直接创建实例的,具有抽象思想的属性和方法,一个类去继承一个特质,就用有了这个特质的方法和字段 一个类必须先extends一个类后,才能with一个特质

你可能感兴趣的:(scala)