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

  }
}

//运行结果
Human
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


  }
}

//运行结果
Human
TTeacher
PianoPlay
I'm playing piano
I'm teaching students

0 0
原创粉丝点击