zoukankan      html  css  js  c++  java
  • OTCL的多继承

     1 Class Thing
     2 Class Animal
     3 Class Other -superclass {Animal Thing}
     4 
     5 Thing instproc init {args} {
     6         puts "here is init from:thing"
     7         eval $self next $args
     8 }
     9 Thing instproc move {} {
    10         puts "here is move from:thing"
    11 }
    12 
    13 Animal instproc init {args} {
    14         puts "here is init from:animal"
    15         eval $self next $args
    16 }
    17 Animal instproc move {} {
    18         puts "here is move from:animal"
    19         eval $self next
    20 }
    21 
    22 Other instproc init {args} {
    23         puts "here is init from:other"
    24         eval $self next $args
    25 }
    26 Other instproc move {} {
    27         puts "here is move from:other"
    28         eval $self next 
    29 }
    30 Other other
    31 other move

    输出:

    here is init from:other
    here is init from:animal
    here is init from:thing
    here is move from:other
    here is move from:animal
    here is move from:thing

    上面是简单地继承两个父类,在调用next的时候,顺序是按继承时候的从左到右的顺序,依次调用。

    如果是这样:

    Class theOne
    Class Thing -superclass theOne
    Class Animal
    Class Other -superclass {Thing Animal}
    
    theOne instproc init {args} {
            puts "here is init from:theOne"
            eval $self next $args
    }
    theOne instproc move {} {
            puts "here is move from:theOne"
            eval $self next 
    }
    
    Thing instproc init {args} {
            puts "here is init from:thing"
            eval $self next $args
    }
    Thing instproc move {} {
            puts "here is move from:thing"
            eval $self next 
    }
    
    Animal instproc init {args} {
            puts "here is init from:animal"
            eval $self next $args
    }
    Animal instproc move {} {
            puts "here is move from:animal"
            eval $self next
    }
    
    Other instproc init {args} {
            puts "here is init from:other"
            eval $self next $args
    }
    Other instproc move {} {
            puts "here is move from:other"
            eval $self next 
    }
    Other other
    other move

    输出:

    here is init from:other
    here is init from:thing
    here is init from:theOne
    here is init from:animal
    here is move from:other
    here is move from:thing
    here is move from:theOne
    here is move from:animal
  • 相关阅读:
    Qt Error: dependent '..***' does not exist.
    Qt 判断文件是否存在
    Qt 添加资源文件
    Qt lcdNumber 不能显示完整时间
    Qt snippet — 打开文件&保存文件
    right-click an action, missing "Go to slot"
    Code the Tree(图论,树)
    李代桃僵
    Dependency Scope
    Selenium的延迟等待
  • 原文地址:https://www.cnblogs.com/lunac/p/3397960.html
Copyright © 2011-2022 走看看