0
点赞
收藏
分享

微信扫一扫

scala中的特质trait和抽象类

IT影子 2022-02-17 阅读 99



文章目录


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