1、通过关键字extends来继承类和接口,如果已经有extends,则通过with来实现多重继承,但是Scala中类和抽象类不支持多重继承,如果存在多重继承,则从右往左进行;
2、Scala中的抽象属性:是未被实例化的属性,如:val name: String,在子类中直接给他赋值;
3、Scala中类的实例对象也可以混入接口,以扩展当前对象的实例功能;
混入接口代码:
trait Logger {
def log(message: String) {
println("Logger:" + message)
}
}
trait RichLogger extends Logger {
override def log(message: String) {
println("RichLogger:" + message)
}
}
class Loggin(name: String) extends Logger {
def login {
println("name:" + name)
log(name)
}
}
object HelloTraitOps {
def main(args: Array[String]): Unit = {
//类实例化时混入接口
val loggin = new Loggin("Spark") with RichLogger
loggin.login //这里就会调用RichLogger中覆盖的Log方法
}
}
备注:
资料来源于:DT_大数据梦工厂(Spark"蘑菇云"行动)
更多私密内容,请关注微信公众号:DT_Spark
如果您对大数据Spark感兴趣,可以免费听由王家林老师每天晚上20:00开设的Spark永久免费公开课,地址YY房间号:68917580