##一、scala中trait的定义
这里的trait字面意思是特质或者特征,这个词翻译成特征比较合适。它的意义和java,c#中接口很类似。但是trait支持部分实现,也就是说可以在scala的trait中可以实现部分方法。
##二、scala中trait的使用
一个类继承不管继承的是抽象类还是接口,都是用extends关键字,而对于多继承时用的是with关键字连接起来,其实背后是这样读的:
extends (类或接口with接口with接口with接口with接口with接口with接口with接口with接口….)
它是把后面做为一个整体来看。
抽象属性可以不赋值,但是得写类型,scala是一门静态语言,如 val name: String
//声明一个 trait
trait TraitBase{
def add(x:Int,y:Int): Int ={
return x+y
}
}
//TraitTest 继承自 TraitBase
class TraitTest extends TraitBase{
//重写父类的方法
override def add(x:Int,y:Int): Int ={
return x+y*10
}
}
//如果需要调用父类的方法,使用super访问父类
class TraitTest extends TraitBase{
override def add(x:Int,y:Int): Int ={
return super.add(x,y)*10
}
}
//使用
val test = new TraitTest
println(test.add(4,5))
//对于多重继承,使用 with 关键字
trait A{
def FA(): Unit ={
println(“FA”)
}
}
trait B{
def FB(): Unit ={
println(“FB”)
}
}
class C{
val content=null
}
//多重继承
class D extends C with A with B{
//这里不需要必须实现trait中的方法,因为已经实现了
}
*//混入:混入trait的数量可以是任意的。用关键字with可以混入更多的trait。如果类已经继承了类,就可以
//使用with混入trait。*
trait Friend {
val name: String
def listen() = println(“