Otcl是Tcl的扩展语言,增加了类的概念,但是和C++又不完全一样,但是ns2模拟中设计的并不太多,
下面给出一个完整的例子,大家看看,熟悉了解一下即可,要是要深入学习,再看大量资料吧。
Class Based ;#定义 Based 类
Based instproc init { args } { ;#构造函数
puts "init"
$self set speed_ 0 ;#初始化成员变量
eval $self next $args ;#显式调用父类的 init 函数
}
Based instproc destroy {} { ;#析构函数
puts "destroy!"
$self next ;# $self next 调用父类同名方法
}
Based instproc speed { spd } {
$self instvar speed_ ;#使用类成员变量前需做如此申明
set speed_ $spd
}
Based base ;#定义 Based 的对象 base,主动调用 init 函数
base speed "fast" ;#调用 speed 函数
puts "[base set speed_]" ;#调用 base 类的成员变量 speed_并输出
Class Derived -superclass Based ;#继承
Derived derived ;#主动调用父类的 init 方法
derived speed "lower" ;#调用父类的 speed 函数
puts "[derived set speed_]"
Derived instproc speed { spd } { ;#重写 speed 方法,实现多态
$self instvar speed_
set speed_ "derived speed"
}
derived speed "spd" ;#验证多态调用
puts "[base set speed_]"
puts "[derived set speed_]"
derived destroy ;#调用 destroy 方法销毁 derived 对象
base destroy ;#调用 destroy 方法销毁 base 对象
上面的例子运行截图如下: