// 没有父类,直接继承特质 // class 类名 extends 特质 // 如果同时继承多个特质的话需要使用with class 类名 extends 特质1 with 特质2 with 特质3 classAnimalextendsBreathable{ var name: String = "动物"
defsayHello: Unit = { println("你好,我是" + name) }
overridedefbreath(): Unit = { println("我会呼吸") } }
// 有父类,需要先继承父类,再继承特质 // class 类名 extends 父类 with 特质1 with 特质2 with 特质3 classBirdextendsAnimalwithFlyable{ overridedeffly(): Unit = { println("我会飞") } }
classDogextendsAnimalwithSwimmable{ overridedefswig(): Unit = { println("我会狗刨") } }
scala的特质中可以包含抽象方法,也可以包含具体方法
特质中如果存在字段,则初始化了就是具体字段,没有初始化则为抽象字段
特质可以继承类来扩展该特质的功能
重写特质的抽象方法时不需要加override关键字
同时继承多个特质的话使用with,class 类名 extends 父类 with 特质1 with 特质2 with 特质3