Scala基础语法7_特质

特质(interface):

快捷键:control+I    Control + O

control + I    特质中有方法未实现,快捷键可以在继承该特质的对象或class(类)中实现该方法

control + O  在对象中或者类中实现特质的方法重写

package day03

/**
 * 特质(interface)
 * 在Scala中特质中可以定义有实现的方法,也可以定义没有实现的方法
 *
 */

trait ScalaTrait {

//没有任何实现的方法
def hello(name: String)
  def smile(name: String) = {
    prinln(s"老赵对$name 妩媚一笑")
  }
}

特质中还可以定义一个变量,且变量可以不用赋值,但在继承它的对象或类中,要重写。 

package day03

object ScalaTraitImpl extends ScalaTrait{

  /**
   *如果特质中hello方法没有实现的话,子类在实现的时候可以不加
   * override,也可以不加
   */
  override def hello(name: String): Unit = {
    println(s"hello $name")
  }

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

  def main(args: Array[String]): Unit = {
    ScalaTraitImpl.hello("hanmeimei")
    ScalaTraitImpl.smile("老段")
  }
}

Trait这个还有一个强大的功能:动态的混入

你可以在定义的时候就混入特质,还可以在创建类的实例时直接混入之歌特质

package day03

/**
 * 特质(interface)
 * 在Scala中特质中可以定义有实现的方法,也可以定义没有实现的方法
 *
 */

trait ScalaTrait {

//没有任何实现的方法
def hello(name: String) = {
  println(name)
}
  def smile(name: String) = {
    println(s"老赵对$name 妩媚一笑")
  }
}
package day03

trait Fly {
     def fly(name: String) ={
       println(s"看,${name} 在飞...")
     }
}
package day03

object ScalaTraitImpl extends ScalaTrait with Fly{

  /**
   *如果特质中hello方法没有实现的话,子类在实现的时候可以不加
   * override,也可以不加
   */
  override def hello(name: String): Unit = {
    println(s"hello $name")
  }

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

  def main(args: Array[String]): Unit = {
    ScalaTraitImpl.hello("hanmeimei")
    ScalaTraitImpl.smile("老段")
    ScalaTraitImpl.fly("taotao222")
  }
}
package day03

class Student {

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

      student.hello("老羊")
      student.fly("taotao")

  }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值