文章目录
- 特质 Trait
- 动态混入
- 抽象类
特质 Trait
相当于java中的接口,可以定义有实现的方法,也可以定义没有实现的方法
trait Animal {
def speak()
}
object Zoo extends Animal {
def main(args: Array[String]): Unit = {
speak()
}
override def speak(): Unit = {
println("miao")
}
}
如果子类中没有实现类,可以不加overwrite,有实现类必须加overwrite
动态混入
在实现类的时候可以混入特质
class Person{
}
object Zoo extends Animal {
def main(args: Array[String]): Unit = {
speak()
//在实现类的时候可以混入特质
val person = new Person with Animal {
override def speak(): Unit = {
println("I'm tom ")
}
}
person.speak()
}
override def speak(): Unit = {
println("miao")
}
}
抽象类
抽象类可以有实现类和没有实现类,但是抽象类必须放在extends后面,多个组合用with连接,java是通过implements 接口1,接口2