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学习笔记13【trait之多重继承、AOP实战】

Scala多重继承Scala多重继承实战代码示例:class Human{ println("Human") }//定义teacher特性 trait TTeacher extends Human...
  • y396397735
  • y396397735
  • 2015年10月10日 11:15
  • 490

c++多重继承的构造执行顺序

class B1    {public:    B1(int i)     {cout"consB1"  };//定义基类B1   class B2     {public:    B2...
  • lpcz2010
  • lpcz2010
  • 2015年10月22日 15:46
  • 392

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

class Base{Base(int i){ }        ~Base(){ }}; class Derive:public Base{Derive::Derive(int i,int j,i...
  • yangguangmeng
  • yangguangmeng
  • 2014年05月09日 13:33
  • 853

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

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

多重继承和虚基类

多重继承描述的是有多个直接基类的类。多重继承会带来两个主要的问题: ①从两个不同的基类继承同名方法; ②从两个或更多相关基类那里继承同一个类的多个实例。例如: class A { private:  ...
  • wswbdfei
  • wswbdfei
  • 2014年07月28日 00:15
  • 893

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

Scala多重继承、多重继承构造器执行顺序及AOP实现 内容: 1、多重继承的trait代码实战 2、多重继承构造器执行顺序 3、给予trait的AOP代码实现 该代码中PianoP...
  • kxr0502
  • kxr0502
  • 2015年08月23日 22:57
  • 229

用java内部类实现多重继承

[java] view plain copy package test;   /**   * class one: Class1   * @author TJ  ...
  • seebetpro
  • seebetpro
  • 2016年07月28日 21:37
  • 867

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

一、多重继承的trait代码实战 class Human { println("Human") } trait TTeacher extends Human { println("TTeache...
  • KongMingJue
  • KongMingJue
  • 2017年07月24日 12:27
  • 127

Objective-C学习笔记---类别(实现多重继承的方法)

✓ 类别是一个类,它是添加了新功能的现有类。 ✓ 使用类别就是为了能够为现有类添加新的方法,不用继承该现有类,就可使用现有类的对象调用添加的方法了。 ✓ 类别可以使类的实现分散在多个文件中. ✓...
  • handnotes
  • handnotes
  • 2011年05月20日 23:43
  • 4917

多重继承的特点、作用/意义和使用条件

多重继承的特点、意义和使用条件 多重继承MI:Multiple Inheritance;单一继承:Single Inheritance; C++阵营中有两派:一种是认为多重继承不好用,一种认为多重...
  • realDonaldTrump
  • realDonaldTrump
  • 2017年10月20日 15:00
  • 189
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:0015.scala的多重继承、多重继承构造器执行顺序、基于trait的AOP实现
举报原因:
原因补充:

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