0015.scala的多重继承、多重继承构造器执行顺序、基于trait的AOP实现
来源:互联网 发布:数据库视频百度云 编辑:程序博客网 时间:2024/05/16 15:53
1.scala的多重继承
packagecom.jn.scala
/**
* Created by admin on 2015/11/12.
*/
classHuman{
println("Human")
}
traitTTeacherextendsHuman{
println("TTeacher")
defteach
}
traitPianoPlayextendsHuman{
println("PianoPlay")
defplayPiano = {println("I'm playing piano")}
}
classPianoTeacherextendsHumanwithTTeacherwithPianoPlay{//构造器初始化顺序,从左边到右边,已经加载的,不会重复加载
override defteach = {println("I'm training students")}
}
objectUseTrait2 {
defmain(args: Array[String]) {
val t1 = new PianoTeacher
t1.playPiano
t1.teach
}
/**
* Created by admin on 2015/11/12.
*/
classHuman{
println("Human")
}
traitTTeacherextendsHuman{
println("TTeacher")
defteach
}
traitPianoPlayextendsHuman{
println("PianoPlay")
defplayPiano = {println("I'm playing piano")}
}
classPianoTeacherextendsHumanwithTTeacherwithPianoPlay{//构造器初始化顺序,从左边到右边,已经加载的,不会重复加载
override defteach = {println("I'm training students")}
}
objectUseTrait2 {
defmain(args: Array[String]) {
val t1 = new PianoTeacher
t1.playPiano
t1.teach
}
}
//运行结果
Human
TTeacher
PianoPlay
I'm playing piano
TTeacher
PianoPlay
I'm playing piano
I'm training students
例2:
packagecom.jn.scala
/**
* Created by admin on 2015/11/12.
*/
classHuman{
println("Human")
}
traitTTeacherextendsHuman{
println("TTeacher")
defteach
}
traitPianoPlayextendsHuman{
println("PianoPlay")
defplayPiano = {println("I'm playing piano")}
}
classPianoTeacherextendsHumanwithTTeacherwithPianoPlay{
override defteach = {println("I'm training students")}
}
objectUseTrait2 {
defmain(args: Array[String]) {
// val t1 = new PianoTeacher
// t1.playPiano
// t1.teach
val t2 = new Human with TTeacher with PianoPlay{ //匿名类进行实现需要重写没有实现的接口teach
override def teach = {println("I'm teaching students")}
}
t2.playPiano
t2.teach
}
/**
* Created by admin on 2015/11/12.
*/
classHuman{
println("Human")
}
traitTTeacherextendsHuman{
println("TTeacher")
defteach
}
traitPianoPlayextendsHuman{
println("PianoPlay")
defplayPiano = {println("I'm playing piano")}
}
classPianoTeacherextendsHumanwithTTeacherwithPianoPlay{
override defteach = {println("I'm training students")}
}
objectUseTrait2 {
defmain(args: Array[String]) {
// val t1 = new PianoTeacher
// t1.playPiano
// t1.teach
val t2 = new Human with TTeacher with PianoPlay{ //匿名类进行实现需要重写没有实现的接口teach
override def teach = {println("I'm teaching students")}
}
t2.playPiano
t2.teach
}
}
//运行结果
Human
TTeacher
PianoPlay
I'm playing piano
TTeacher
PianoPlay
I'm playing piano
I'm teaching students
0 0
- 0015.scala的多重继承、多重继承构造器执行顺序、基于trait的AOP实现
- Scala:基于trait的多重继承构造器的执行顺序、基于trait的AOP实践
- 基于trait的多重继承构造器的执行顺序、基于trait的AOP实践
- scala-15Scala多重继承、多重继承构造器执行顺序及AOP实现
- Scala学习第十五天 Scala多重继承、多重继承构造器执行顺序及AOP实现
- Scala多重继承、多重继承构造器执行顺序及AOP实现
- 15.Scala多重继承、多重继承构造器执行顺序及AOP实现
- Dt大数据梦工厂王家林老师 Scala实战详解之第15讲 Scala多重继承、多重继承构造器执行顺序及AOP实现
- c++多重继承的构造执行顺序
- php 多重继承的替代方案trait
- php trait 简明教程,多重继承的实现方案
- 多重继承构造函数执行顺序
- 多重继承构造函数执行顺序
- 多重继承构造函数执行顺序
- 多重继承的构造函数和析构函数的执行顺序(包含虚基类)
- 虚基类和多重继承下构造函数的顺序
- C++中多重继承构造函数调用的先后顺序
- 多重继承-构造函数与析构函数执行顺序
- FreeRTOS系列第3篇---FreeRTOS移植指南
- Unreal引擎术语表
- Android之不能静态注册的系统广播(5个)
- ""与null区别 空指针异常机理
- 0014.trait的混入
- 0015.scala的多重继承、多重继承构造器执行顺序、基于trait的AOP实现
- 【Leetcode】Binary Tree Inorder Traversal
- 0016.scala中的包
- object-UI之基本控件
- 0017.包、类、对象、成员的访问权限
- 【Leetcode】Populating Next Right Pointers in Each Node
- 传值有四种方法 : 1.属性传值 2.单例传值 3.代理传值 4.block传值
- hibernate ehcache 配置指导
- 传值与传址