perl 面向对象 use base
2016-05-14 08:37
288 查看
1、XXX.pm 文件里面的第一行要是:package XXX; 2、要有构造函数 sub new,实现如下: sub new { my $class = shift; # Get the request class name my $self = {}; my ($name)=@_; my $self = { "name" =>$name }; bless $self, $class; # Use class name to bless() reference return $self; } 3、接着用sub YYY{} 定义自己的函数 例如: sub setBeanType{ my ($class, $name) = @_;//传进来的第一个参数是类似c++的this指针,第二个才是真正的参数 $class->{'Bean'} = $name; print "Set bean to $name \n"; } [root@wx03 test]# cat p1.pm package p1; use Data::Dumper; sub new { my $self = {}; my $invocant = shift; my $class = ref($invocant) || $invocant; my ($name)=@_; my $self = { "name" =>$name }; bless $self, $class; # Use class name to bless() reference print "111111111111111111\n"; $str=Dumper($self); print "\$str is $str\n"; return $self; }; sub setBeanType{ my ($self, $name) = @_;##//传进来的第一个参数是类似c++的self指针,第二个才是真正的参数 $self->{'Bean'} = $name; print "Set bean to $name \n"; $str=Dumper($self); print "\$str is $str\n"; }; 1; [root@wx03 test]# cat p1.pm package p1; use base qw(p2); use Data::Dumper; sub new { my $self = {}; my $invocant = shift; my $class = ref($invocant) || $invocant; my ($name)=@_; my $self = { "name" =>$name }; bless $self, $class; # Use class name to bless() reference print "111111111111111111\n"; $str=Dumper($self); print "\$str is $str\n"; return $self; }; sub setBeanType{ my ($self, $name) = @_;##//传进来的第一个参数是类似c++的self指针,第二个才是真正的参数 $self->{'Bean'} = $name; print "Set bean to $name \n"; $str=Dumper($self); print "\$str is $str\n"; }; 1; [root@wx03 test]# cat p1.pl unshift(@INC,"/root/test"); require p1; $ua=p1->new('lily'); print "2222222222222222\n"; $str=$ua->setBeanType(scan); [root@wx03 test]# perl p1.pl 111111111111111111 $str is $VAR1 = bless( { 'name' => 'lily' }, 'p1' ); 2222222222222222 Set bean to scan $str is $VAR1 = bless( { 'Bean' => 'scan', 'name' => 'lily' }, 'p1' ); 不断的填充这个对象: 使用基类: use base 是面向对象编程时,用来描述“基类”的:
相关文章推荐
- 小王子读后感。。偶然写的
- 如何查看SE16N修改的表的记录
- Markdownpad2 文本编辑工具的破解方法
- 使用scanf函数时有时会把回车也读入,最终让回车传入缓冲区
- 释放Ubuntu/Linux系统cache,增加可用内存空间
- Liferay获取用户的IP地址
- 【华为OJ】【058-合法IP】
- Mysql常用语法
- Linux进程地址管理之mm_struct
- 值类型和引用类型的区别
- SD模块Bapi
- Http请求状态码
- 构造函数初始化时必须采用初始化列表
- 【华为OJ】【057-字符串运用-密码截取】
- .NET Core全新的配置管理[共9篇]
- 字符串
- openjudge7627 鸡蛋的硬度
- docker动态映射运行的container端口
- SA后缀数组模板 文件修复
- python学习笔记-Day1