1.scala的多重继承
package
com.jn.scala
/**
* Created by admin on 2015/11/12.
*/
class Human{
println( "Human" )
}
trait TTeacher extends Human{
println( "TTeacher" )
def teach
}
trait PianoPlay extends Human{
println( "PianoPlay" )
def playPiano = {println( "I'm playing piano" )}
}
class PianoTeacher extends Human with TTeacher with PianoPlay{//构造器初始化顺序,从左边到右边,已经加载的,不会重复加载
override def teach = {println( "I'm training students" )}
}
object UseTrait2 {
def main(args: Array[ String ]) {
val t1 = new PianoTeacher
t1.playPiano
t1.teach
}
/**
* Created by admin on 2015/11/12.
*/
class Human{
println( "Human" )
}
trait TTeacher extends Human{
println( "TTeacher" )
def teach
}
trait PianoPlay extends Human{
println( "PianoPlay" )
def playPiano = {println( "I'm playing piano" )}
}
class PianoTeacher extends Human with TTeacher with PianoPlay{//构造器初始化顺序,从左边到右边,已经加载的,不会重复加载
override def teach = {println( "I'm training students" )}
}
object UseTrait2 {
def main(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:
package
com.jn.scala
/**
* Created by admin on 2015/11/12.
*/
class Human{
println( "Human" )
}
trait TTeacher extends Human{
println( "TTeacher" )
def teach
}
trait PianoPlay extends Human{
println( "PianoPlay" )
def playPiano = {println( "I'm playing piano" )}
}
class PianoTeacher extends Human with TTeacher with PianoPlay{
override def teach = {println( "I'm training students" )}
}
object UseTrait2 {
def main(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.
*/
class Human{
println( "Human" )
}
trait TTeacher extends Human{
println( "TTeacher" )
def teach
}
trait PianoPlay extends Human{
println( "PianoPlay" )
def playPiano = {println( "I'm playing piano" )}
}
class PianoTeacher extends Human with TTeacher with PianoPlay{
override def teach = {println( "I'm training students" )}
}
object UseTrait2 {
def main(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