0015.scala的多重继承、多重继承构造器执行顺序、基于trait的AOP实现

原创 2015年11月21日 08:49:34
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

  }
}

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


  }
}

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

相关文章推荐

Scala多重继承、多重继承构造器执行顺序及AOP实现

1.构造顺序是从左往右构造的   虽然TTeacher的父类是human 但是不回重复构造   2.匿名类    下面这段代码必须实现teach方法否则不能构造出来 3.如果...

Dt大数据梦工厂王家林老师 Scala实战详解之第15讲 Scala多重继承、多重继承构造器执行顺序及AOP实现

class Human{ println("Human")}trait TTeacher extends Human{ println("TTeacher") def teach}trait Pian...
  • sd637
  • sd637
  • 2015年09月15日 01:18
  • 325

Scala学习第十五天 Scala多重继承、多重继承构造器执行顺序及AOP实现

内容: 1 多重继承的trait代码实战 2 多重继承构造器执行顺序 3 基于trait的AOP代码实战//这讲内容对做大型项目十分重要,trait本身可以有方法的实现,这样做大型工程的具体模块...

Scala学习笔记13【trait之多重继承、AOP实战】

Scala多重继承Scala多重继承实战代码示例:class Human{ println("Human") }//定义teacher特性 trait TTeacher extends Human...

Python多重继承的异构构造器

在Python里面,如果你使用上Qt,SQLAlchemy,Twisted之类各种大型类库时候,有时候多重继承Multiple Inheritance是个简单的解决方法,但是多重继承的复杂性总容易造成...

多重继承构造函数执行顺序

class 派生类名:继承方式1 基类名1,继承方式2 基类名2,.... {    //派生类成员定义 }; 对每个基类可以用不同的继承方式,默认继承方式为private。       在...

PHP 5.4 的 Trait 特性_实现类的多重继承

Trait 是 PHP5.4 中的新特性,是 PHP 多重继承的一种解决方案。例如,需要同时继承两个 Abstract Class, 这将会是件很麻烦的事情,Trait 就是为了解决这个问题。基本使用...

C++中多重继承构造函数调用的先后顺序

#include using namespace std; class E { public: E() { cout

实现c++类的多重继承的例程

  • 2011年04月25日 09:09
  • 848KB
  • 下载

实现C++类的多重继承

  • 2017年11月11日 15:12
  • 4.13MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:0015.scala的多重继承、多重继承构造器执行顺序、基于trait的AOP实现
举报原因:
原因补充:

(最多只允许输入30个字)