Scala:Scala的trait

Scala的特质

Scala 的特质定义:

traitidentified{

}

Scala特质作用:

trait Person{

     val name="scala"

     def a():Unit

}

 Scala的trait的用法

1.只有抽象方法的trait

2.只有抽象成员和方法的trait

3.具体成员的变量和方法

4.对象继承特质

trait Person{

    valname:String

    def run():Unit

    def speak():Unit

    defjump()={实现}

}

 

import java.rmi.server.UID
//trait:特质(美丽 ,智慧,耐心。。。)
//作用:(1)当作接口来使用,实现多继承;(2)当作抽象类,定义类的标准
//格式:trait 名字{属性,方法}


trait BackgroundPlayer {
  //abstract class BackgroundPlayer(){
  //抽象属性
  val cd:String
  //抽象方法
  def play
  def  color="red"//具体属性
  def pause():Unit={//具体方法
  }
}
//播放视频
trait VidepPlayer{
  def playVideo
}
abstract class Screen{
  def showScreen

}
//子类继承特质,必须要实现所有的抽象的成员
class Mp3 extends  BackgroundPlayer  {
  val cd = "周杰伦"
  def play(): Unit = {
    println(s"Mp3 播放 ${cd}")
  }
}

//一个子类有多个父类-多继承
//一个子类继承一个抽象类,并实现多个特质
class Mp4 extends Screen with BackgroundPlayer with VidepPlayer {
  val cd = "王杰"
  def play(): Unit = {
    println("mp3 播放器")
  }

  def playVideo(): Unit = {
    println("Mp4 播放器-视频")
  }
  def showScreen():Unit={
    println("ShowScreen")
  }
}

object test1 {
  def main(args: Array[String]): Unit = {
    //trait 不能直接new
    // new BackgroundPlayer {
    val m1 = new Mp4()
    m1.play()
  }

}

//定义一个特质
//特质可以有抽象属性,具体属性,抽象方法,具体方法
trait Beauty{
  //抽象属性(没有=)
  val hair:String
  //具体属性
  var age=18
  val height=180//val不可以修改,var可以修改

  //抽象方法(没有)
  def smile
  //具体方法
  def say():Unit={}
}
class Boy extends Beauty{
  //抽象属性 要具体实现
  val hair="短发"
  //具体属性可以重写(可选)
  //var修饰的,可以直接赋值
  //val修饰的,可以用override重写
  override val height=178
  age=20
  //抽象方法 要具体实现
  def smile():Unit={
    println(s"嘴角微微扬起")_
  }

  //具体方法可以重写(可选)
  override def say(): Unit = {
    println(s"${age}岁,${height}大高个,${hair}")
  }

}
object test2 {
  def main(args: Array[String]): Unit = {
    val  b1=new Boy()
  //  println(b1.age,b1.height)
  b1.say()
  }

}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值