scala trait

/**
  * 特质(interface)就是对应的java中的接口
  * 在Scala中特质中可以定义有实现的方法,也可以定义没有实现的方法
  */
trait ScalaTrait {
    /**
      * 可以只定义接口,也可以实现方法
      */
    def hello(name: String) 
    def small(name: String) = {
        println(s"老赵对 $name 妩媚一笑")
    }
}
object ScalaTraitImpl extends ScalaTrait with Fly{
    // override val name: String = "bird"
    /**
      * 如果特质中hello方法没有实现的话,子类在实现的时候可以不加override关键字也可以加
      */
    override def hello(name: String): Unit = {
        println(s"hello $name")
    }

    /**
      * 如果特质中某个方法有具体的实现,在子类继承重写的时候,必须使用override关键字
      */
    override def small(name: String): Unit = {
        println(s"$name")
    }

    def main(args: Array[String]): Unit = {
        ScalaTraitImpl.hello("hanmeimei")
        ScalaTraitImpl.small("wang")
        ScalaTraitImpl.fly("wang")
    }
}

使用with 可以混入多个特指(实现多个接口)

class Student {

}

object Person {

    def main(args: Array[String]): Unit = {
        /**
          * 在scala中可以动态的混入N个特质
          */
        val student = new Student with Fly with ScalaTrait
        //student.hello("wang")
        student.fly("xing")
        student.small("wang")
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值