利用scala的trait特性实现简单AOP
来源:互联网 发布:古代神话 知乎 编辑:程序博客网 时间:2024/05/17 23:34
最近开始系统的研究下scala
trait字面意思是特质或者特征,这里翻译成特征比较合适。
scala中trait的意义和java中接口很类似,但是trait支持实现,也就是说在scala的trait中方法可以是抽象方法,也可以是带实现的非抽象方法。
另一个重要的与java interface的不同点,scala可以在一个class实例化的时候通过with关键字混合进一个trait。with关键字用来实现包装器的功能。
利用上面提到的特性,来实现一个简单的AOP
定义一个SchoolTrait,添加一个抽象方法,不需要将方法声明为abstract,特征中未被实现的方法默认就是抽象的
package testtrait SchoolTrait { def study()}
定义一个ClassTrait,ClassTrait继承于SchoolTrait,并重写父类SchoolTrait的study方法
package testtrait ClassTrait extends SchoolTrait{ abstract override def study()={ //上课前向老师问好 println("=====Hello Teacher=====") //调用原来的处理 super.study println("=====Goodbye Teacher=====") //下课后向老师道别 } }
下面用一个测试类TeachClass,来进行验证
package testclass TeachClass extends SchoolTrait{ def study(){ println("*** start math cource ***"); } }object TeachClass { def main(agrs : Array[String]){ val test = new TeachClass with ClassTrait test.study } }
查看运行结果
=====Hello Teacher=====
*** start math cource ***
=====Goodbye Teacher=====
0 0
- 利用scala的trait特性实现简单AOP
- Scala中的语言特性是如何实现的(3) -- Trait
- 0015.scala的多重继承、多重继承构造器执行顺序、基于trait的AOP实现
- scala的trait是如何实现的?
- Scala:基于trait的多重继承构造器的执行顺序、基于trait的AOP实践
- Scala Trait 的线性化
- Scala 有趣的Trait
- Scala的Trait
- Scala的trait
- scala的trait
- php的trait特性
- (zz)Scala编程中的trait特性
- Scala之Trait的使用
- scala的trait之我见
- 【scala 特质】Scala的Trait特质使用
- 一篇写的比较好的关于scala中trait特性的文章
- Scala:trait
- Scala Trait
- zookeeper注册服务与netty的简单结合应用
- 常用git命令积累汇总
- 基于自然语言关键词的打分器
- 进程间通信(IPC)概述
- 自然语言处理之分词器ansj和hanlp介绍
- 利用scala的trait特性实现简单AOP
- 基于flume-ng抓取mysql数据到kafka
- flume使用hdfs sink时需要注意的几点
- Flume-ng 1.6启动过程源码分析(一)
- 浙大PAT甲级1006
- Flume-ng 1.6启动过程源码分析(二)
- Spark之RDD基础
- gdb--查看内存区命令
- 机器学习工程师需要了解的十种算法