• 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
  • 相关阅读:
    css 重新学习系列(1)
    sublime Text 使用
    值得收藏的前端大牛博客
    javascript中最常用的方法
    ie6,ie7兼容性总结
    jQuery学习笔记(二)
    jQuery学习笔记(一)
    php smarty
    javascript DOM(2) 一个网页上切换显示不同的图片或文本
    effective c++ 8: Prevent exceptions from leaving destrctors
  • 原文地址:https://www.cnblogs.com/lunac/p/3397960.html
Copyright © 2020-2023  润新知