trait初学习

注意:在同一个包中,即使两个trait分别属于不同的类,其命名不能相同
实例1:(汽车类)

trait Type1 {
	def wheele: String = {
		"有四个轮子"
	}
	def run(): Unit
}
trait Type2 {
	def fly(): Unit = {
		println("可以飞")
	}
	def downSea(): Unit = {
		println("下海")
	}
}
abstract class Car {
	def brand: String
	def engine: String
	def didi(): String = {
		"汽车鸣笛嘀嘀嘀"
	}
}
class BMW extends Car with Type1 with Type2 {
	override def band: String = {
		"德国宝马"
	}
	override def engine: String = {
		"转子引擎"
	}
	override def run(): Unit = {
		println("在陆地上跑")
	}
}
class LingYun extends Car {
	override def brand: String = {
		"凌云汽车"
	}
	override def engine: String = {
		"纯电动汽车"
	}
}

object DemoCar {
	def main(args: Array[String]): Unit = {
		val bmw = new BMW
		println(bmw.brand)
		println(bmw.engine)
		println(bmw.didi())
		println(bmw.wheele)
		bmw.run()
val LingYun: LingYun with Type1 with Type2 = new LingYun with Type1 with Type2 {
		override def run(): Unit = {
			println("两个轮子的电动汽车")
		}
	}
	LingYun.run()
	LingYun.fly()
	LingYun.downSea()
	println(LingYun.brand)
	println(LingYun.engine)
	}
}

在这里插入图片描述
实例2:(动物类)

trait Type11 {
	def fly(): Unit = {
		println("会飞")
	}
}
trait Type22 {
	def shut(): Unit = {
		println("叫")
	}
}
trait Type33 {
	def running(): Unit = {
		println("跑")
	}
}

abstract class Animals {
	def lei: String
	def sport: String
	def voice: String
}
class Dog extends Animals {
	override def lei: String = {
		"狗:"
	}
	override def sport: String = {
		"奔跑"
	}
	override def voice: String = {
		"汪汪"
	}
}
class Rabbit extends Animals {
	override def lei: String = {
		"兔子:"
	}
	override def sport: String = {
		"蹦蹦跳跳"
	}
	override def voice: String = {
		"小声"
	}
}
class Chicken extends Animals {
	override def lei: String = {
		"鸡:"
	}
	override def sport: String = {
		"扑棱"
	}
	override def voice: String = {
		"咯咯咯"
	}
}
object DemoAnimals {
	def main(args: Array[String]): Unit = {
		val Dog: Dog with Type11 with Type22 with Type33 = new Dog with Type11 with Type22 with Type 33
		println(Dog.lei)
		Dog.shut()
		Dog.running()

		val Chicken: Chicken with Type11 with Type22 with Type33 = new Chicken with Type11 with Type22 with Type33
		println(Chicken.lei)
		println(Chicken.sport)
		Chicken.shut()

		val Rabbit: Rabbit with Type11 with Type22 with Type33 = new Rabbit with Type11 with Type22 with Type33
		println(Rabbit.lei)
		println(Rabbit.sport)
	}
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值