oo Perl 继承

wxPerl是一个纯oo的gui库。今天在看它的例子的时候,也试了一下不同的继承方法。
在wxPerl的hello.pl中是这样用的:
use vars qw(@ISA);
@ISA = qw(Wx::App);
在programming Perl里查了一下use vars这个pragma. 发现,这种用法已经在某种程度
上废弃了,因为有了our. 上面的代码等同于:
our (@ISA) = qw(Wx::App);
他们的作用都是定义一个包全局变量。 要注意的是不要混合使用,即,不要在一段
代码中对@ISA同时使用use vars 和 our。(在一个文件里定义一个以上的包时)
除了这两种方法,还可以用:
use base qw(Wx::App);
这段代码等价于:
BEGIN{
    require Wx::App;  # 注意,这里用的是裸字。具体看require的介绍
    push @ISA, qw(Wx::App);

还发现了一个小问题,在用use base qw(Wx::App);
的时候,父类必须以1;结尾,而另外两种方法,不用也有可能ok.
这可能是require的原因。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章