特质(Trait)
定义
- 特质是Scala中特有一种形式;
- 特质(Trait)用于类于类之间共享方法和属性,Scala特质相当于是Java8中的接口
-
在Scala特质中即可以定义属性,也可以定义抽象方法而且还可以定义已经实现的方法
ps:Scala中一切皆继承,Scala会将所有的数据类型都看做类,所以只有一个关键字 extends
没有 implements 实现
语法
- 1.在没有父类的前提下,继承一个特质
- 2.有父类继承,并且还有继承一个特质
class 类名 extends 父类 with 特质
- 3.一个类一次继承多个特质
ps: Scala中类是单一继承,一个类只能一个直接父类
因为Scala中只有extends关键,所以不能看做是多继承
相当于是Java中类实现多个接口,要这样理解
extends -->被翻译成继承之外,这个词应该是 “扩展” 意思
特质Trait使用
trait Flyable {
//定义属性
val speed:Int=1000
val heightL:Int
//定义实现方法
def fly:String={
"I can fly"
}
//定义抽象方法
def fight:String
}
继承特质
class Bird extends Flyable{
override val heightL: Int = 100
override def fight: String ="huifei"
//在子类继承父类或特质的情况下建议使用 override进行方法和属性重写
override def fly: String = super.fly
}
特质的特殊继承
class Animal{}
trait Flyable2 extends Animal{} // 特质是可以继承类的,特质会获取到类中属性和方法(可见的)
class Cat extends Flyable2{} //当前Cat就会有Flyable2和Animal中所有属性和方法(可见的)
class Dog extends Flyable with Flyable2{} //一个类继承多个特质,这里相当于是实现特质,不
是多继承
class QQ extends Animal with Flyable2{} //继承类 一定是先继承在写特质