objectUseTrait {def main(args:Array[String]): Unit ={
val t1=new PianoTeacher
t1.playPiano
t1.teach
val t2= new Human with TTeacher with PianoPlayer{
def teach={println("I'm teaching students.")}
}
t2.playPiano
t2.teach
}
}
AOP
package kmust.hjr.learningScala15
/**
* Created by Administrator on 2015/7/20.
*//*AOP*/traitAction{def doAction
}
traitTBeforeAfterextendsAction{abstractoverridedef doAction: Unit ={
println("Initialization")
super.doAction
println("Destroyed")
}
}
classWorkextendsAction{overridedef doAction=println("Working...")
}
object UseTrait {
defmain(args:Array[String]): Unit ={
val work=new Work with TBeforeAfter
work.doAction
}
}
完整代码
package kmust.hjr.learningScala15
/**
* Created by Administrator on 2015/7/20.
*/classHuman{
println("Human")
}
traitTTeacherextendsHuman{
println("TTeacher")
def teach
}
traitPianoPlayerextendsHuman{
println("PianoPlayer")
def playPiano={println("I'm playing piano.")}
}
classPianoTeacherextendsHumanwithTTeacherwithPianoPlayer{overridedef teach={println("I'm training students. ")}
}
/*AOP*/traitAction{def doAction
}
traitTBeforeAfterextendsAction{abstractoverridedef doAction: Unit ={
println("Initialization")
super.doAction
println("Destroyed")
}
}
classWorkextendsAction{overridedef doAction=println("Working...")
}
objectUseTrait {def main(args:Array[String]): Unit ={
/* val t1=new PianoTeacher
t1.playPiano
t1.teach
val t2= new Human with TTeacher with PianoPlayer{
def teach={println("I'm teaching students.")}
}
t2.playPiano
t2.teach*/val work=new Work with TBeforeAfter
work.doAction
}
}