trait的abstract override使用:

当我看到abstract override介绍的时候也是一脸懵逼,因为快学scala,只介绍了因为TimestampLogger中调用的super.log依旧是个abstract class,所以必须在方法前加上abstract和override。但是并没有具体介绍如何使用,然后查阅了其他文档,才明白使用方法。

下面的代码定义了超类LoggerEmpty,这个定义意味着该特质只能混入扩展LoggerEmpty的类中。 
在特质中声明抽象方法中有super调用,在特质里super调用时动态绑定的;而在类中,由于继承的抽象类,super调用时非法的。这里必须使用abstract override标识符,它意味着特质必须被混入某个具有期待方法的具体定义的类中,这种定义仅在特质定义中使用。

trait LoggerEmpty {
println("LoggerEmpty trait")
def log(msg: String)
} trait TimestampLogger extends LoggerEmpty{
println("TimestampLogger trait")
abstract override def log(msg: String){
println("TimestampLogger")
super.log("TimestampLogger:" + msg)
} } class TraitImp extends LoggerEmpty{
println("TraitImp class")
def log(msg: String) {
println(msg)
} } (new TraitImp() with TimestampLogger).log("input")

运行结果:

LoggerEmpty trait
TraitImp class
TimestampLogger trait
TimestampLogger
TimestampLogger:input

最新文章

  1. form表单练习
  2. Eclipse和MyEclipse工程描述符.classpath和.project和.mymetadata详解aaaaaa(转)
  3. 借助mosquitto“实时”远程监控服务器数据库运行状态
  4. fis3运行项目的前准备
  5. Golang与MySQL
  6. android中的界面编程
  7. sicily-1029 Rabbit
  8. 信号量多-threaded同步Semaphore
  9. CentOS搭建PHP服务器环境(LAMP)
  10. 201521123070 《JAVA程序设计》第7周学习总结
  11. HashMap浅入理解
  12. JS 自由变量---JS 学习笔记(三) 补充
  13. python笔记9-字符串操作
  14. PMP:5.项目范围管理
  15. Virus
  16. 使用Kafka、Elasticsearch、Grafana搭建业务监控系统(三)Elasticsearch
  17. docker swarm+register-web+shipyard搭建
  18. 三层构架 和 MVC 是什么?
  19. C语言易错点
  20. BZOJ 2303 方格染色(带权并查集)

热门文章

  1. 左偏树 P3377【模板】左偏树(可并堆)
  2. CodeForces 758 D Ability To Convert
  3. SQL数据同步到ELK(二)- Elastic Search 安装
  4. 逆向破解之160个CrackMe —— 030
  5. 【LeetCode】435-无重叠区间
  6. Empire – PowerShell 后渗透攻击框架
  7. linux安装python串口工具pyserial遇到不能成功导入的问题
  8. HTML5为什么只需要写<!DOCTYPE HTML>?
  9. git之rebase、merge和cherry pick的区别(面试常问)
  10. Web之-----弹出确认框控件应用