scala中的特质trait和抽象类

IT影子

关注

阅读 99

2022-02-17



文章目录


  • ​​特质 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



精彩评论(0)

0 0 举报