Scala中的接口称为trait,trait类似于Java中的interface。
1.trait
在triat中可以定义抽象方法.类可以使用extends 关键字继承trait,无论继承类还是trait统一都是使用extends这个关键字。类继承trait后,必须实现trait中的抽象方法,实现时不需要使用override关键字。
scala不支持对类进行多继承,但是支持对trait进行多重继承,使用with关键字即可。下面我们就来看一个接口多继承的案例。
package com.simoniu
/**
* Created by xuwei
*/
object PersonDemo {
def main(args: Array[String]): Unit = {
val p1 = new Person("tom")
val p2 = new Person("jack")
p1.sayHello(p2.name)
p1.makeFriends(p2)
}
}
trait HelloTrait {
def sayHello(name: String)
}
trait MakeFriendsTrait {
def makeFriends(p: Person)
}
class Person(val name: String) extends HelloTrait with MakeFriendsTrait {
def sayHello(name: String) = println("Hello, " + name)
def makeFriends(p: Person) = println("Hello, my name is " + name + ", your name is " + p.name)
}
运行结果:
Hello, jack
Hello, my name is tom, your name is jack