当前位置:K88软件开发文章中心编程语言PerlPerl01 → 文章内容

Perl 面向对象

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-11 13:11:02

名为 :





$firstName\n";执行以上程序后,输出结果为:$ perl main.pl名字:小明姓氏:王编号:23234345这是子类函数设置前姓名为 :





小明这是子类函数设置后姓名为 :





小强默认载入如果在当前类、当前类所有的基类、还有 UNIVERSAL 类中都找不到请求的方法,这时会再次查找名为 AUTOLOAD() 的一个方法。如果找到了 AUTOLOAD,那么就会调用,同时设定全局变量 $AUTOLOAD 的值为缺失的方法的全限定名称。如果还不行,那么 Perl 就宣告失败并出错。如果你不想继承基类的 AUTOLOAD,很简单,只需要一句:sub AUTOLOAD;析构函数及垃圾回收当对象的最后一个引用释放时,对象会自动析构。如果你想在析构的时候做些什么,那么你可以在类中定义一个名为"DESTROY"的方法。它将在适合的时机自动调用,并且按照你的意思执行额外的清理动作。package MyClass;...sub DESTROY{ print "MyClass:





:





DESTROY called\n";}Perl 会把对象的引用作为唯一的参数传递给 DESTROY。注意这个引用是只读的,也就是说你不能通过访问$_[0] 来修改它。(译者注:参见 perlsub)但是对象自身(比如 "${$_[0]"或者 "@{$_[0]}" 还有 "%{$_[0]}" 等等)还是可写的。如果你在析构器返回之前重新 bless 了对象引用,那么 Perl 会在析构器返回之后接着调用你重新 bless 的那个对象的 DESTROY 方法。这可以让你有机会调用基类或者你指定的其它类的析构器。需要说明的是,DESTROY 也可以手工调用,但是通常没有必要这么做。在当前对象释放后,包含在当前对象中的其它对象会自动释放。Perl 面向对象实例我们可以通过以下实例来进一步理解Perl面向对象的应用:实例





#!/usr/bin/perl





# 下面是简单的类实现package MyClass;sub new{print "MyClass:





:





new called\n";my $type = shift;





# 包名my $self = {};





# 引用空哈希return bless $self, $type;}sub DESTROY{print "MyClass:





:





DESTROY called\n";}sub MyMethod{print "MyClass:





:





MyMethod called!\n";}





# 继承实现package MySubClass;@ISA = qw( MyClass );sub new{print "MySubClass:





:





new called\n";my $type = shift;





# 包名my $self = MyClass->new;





# 引用空哈希return bless $self, $type;}sub DESTROY{print "MySubClass:





:





DESTROY called\n";}sub MyMethod{my $self = shift;$self->SUPER:





:





MyMethod();print " MySubClass:





:





MyMethod called!\n";}





# 调用以上类的主程序package main;print "调用 MyClass 方法\n";$myObject = MyClass->new();$myObject->MyMethod();print "调用 MySubClass 方法\n";$myObject2 = MySubClass->new();$myObject2->MyMethod();print "创建一个作用域对象\n";{my $myObject2 = MyClass->new();}





# 自动调用析构函数print "创建对象\n";$myObject3 = MyClass->new();undef $myObject3;print "脚本执行结束...\n";





# 自动执行析构函数执行以上程序,输出结果为:调用 MyClass 方法MyClass:





:





new calledMyClass:





:





MyMethod called!调用 MySubClass 方法MySubClass:





:





new calledMyClass:





:





new calledMyClass:





:





MyMethod called! MySubClass:





:





MyMethod called!创建一个作用域对象MyClass:





:





new calledMyClass:





:





DESTROY called创建对象MyClass:





:





new calledMyClass:





:





DESTROY called脚本执行结束...MyClass:





:





DESTROY calledMySubClass:





:





DESTROY called

上一页  [1] [2] 


Perl 面向对象