Scala面向对象特质的动态混入功能

/**
  * 定义特质(接口)
  */

trait Type{
  //没有赋值的属性 能源
  val energy:String
  //声抽象方法 获取能源方式
  def power():String
  //已实现的方法 轮子
  def wheels:String = {
    "have four wheel"
  }
}
trait Type1{
  //已实现的方法
  def skill():String = {
    "飞上天"
  }
}
trait Type2{
  //赋值的属性 品牌
  val brand: String = "冒牌货战车"
  //已实现的方法
  def skill2():String={
    "能下海潜水作战"
  }
}

/**
  * 定义一个抽象类 汽车类
  */
abstract class Car{
  //声明一个没有赋值的属性 品牌
  val brand: String
  //抽象方法 跑
  def run(): String
  //定义一个已经实现的方法 动作方法
  def action: String = {"by car"}

}


/**
  * 实现类
  */

class Bmw extends Car with Type{
  //赋值了抽象类中的没有赋值的属性,可以没有override
  val brand: String = "宝马"
  //实现了抽象类中没有实现的方法
  def run(): String = "我能跑200迈"
  //赋值了特质中的没有赋值的属性,可以没有override
  val energy: String = "电"
  //实现了特质中没有实现的方法
  def power(): String = "充电"

  //重定了抽象类中的方法,必须有override
  override def action:String = "自动驾驶"
  //重定了特质中的方法,必须有override
  override val wheels:String={"我有四个轮子"}

  override def toString: String = "<<<车的品牌是:"+this.brand+
  "<<<车的技能1是:"+this.run()+"<<<驱动方式是:"+this.action+
    "<<<用的能源是:"+this.energy+"<<<能源补充方式是:"+this.power()+
  "<<<基本构造:"+this.wheels
}

/**
  * 创建一个类 冒牌货
  */
class MaoPaiHuo


object TraitDemo{

  def main(args: Array[String]): Unit = {
    //加工一辆宝马车
    val b = new Bmw
    println(b.toString)
   println("***********    冒牌货     **************")
    //特质的动态混入功能,可以在new一个对象的时候with N个特质,
    // 就有with的每个特质的已实现方法和已定义的属性
    val mph: MaoPaiHuo with Type1 with Type2 = new MaoPaiHuo with Type1 with Type2
    println("我的品牌叫做:"+mph.brand +"----拥有技能1-->"+mph.skill()+
      "----拥有技能2--->"+mph.skill2())

  }
}

 

 

运行结果:

 

<<<车的品牌是:宝马<<<车的技能1是:我能跑200迈<<<驱动方式是:自动驾驶<<<用的能源是:电<<<能源补充方式是:充电<<<基本构造:我有四个轮子
*********** 冒牌货 **************
我的品牌叫做:冒牌货战车----拥有技能1-->飞上天----拥有技能2--->能下海潜水作战

 

转载于:https://www.cnblogs.com/itBulls/articles/9441303.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值