Perl 类继承简单讲解
发布时间:2020-12-15 23:40:08 所属栏目:大数据 来源:网络整理
导读:在用面向对象编程范式时,常用到类的继承。Perl的类使用Module的方式实现,一个package即可完成一个类声明。 CPAN上找到一个模块,使用了继承,本人从未使用过继承,这次也照猫画虎写了一个非常简单的demo,初步窥探了继承的实现过程。 环境: Linux 3.18.0-
在用面向对象编程范式时,常用到类的继承。Perl的类使用Module的方式实现,一个package即可完成一个类声明。 CPAN上找到一个模块,使用了继承,本人从未使用过继承,这次也照猫画虎写了一个非常简单的demo,初步窥探了继承的实现过程。 环境: Linux 3.18.0-kali3-amd64? x86_64 GNU/Linux Perl v5.14.2 built for x86_64-linux-gnu-thread-multi 父类: Scalar, 子类: Phone #!/usr/bin/perl # author : ez # date : 2015/7/21 # describe : -- package Phone; use strict; use warnings; @Phone::ISA = 'Scalar'; # very important # our $VERSION = 1.0; sub new { my $class = shift; my ($_name,$_price,$_color) = (shift,shift,shift); my $self = { name => $_name,price => $_price,color => $_color }; bless $self,$class; $self; } sub sftr { my $self = shift; # foreach (@Phone::ISA) { # print "$_n"; # } # only print 'Scalar' $self->SUPER::sftr (); } sub display { my $self = shift; print "name :". $self -> {'name'} . ",price :". $self -> {'price'} . ",color :". $self -> {'color'} . "n"; } 1; 其中有一句代码非常重要,主要是声明其继承的是哪个类: @Phone::ISA = 'Scalar'; 父类的简单编写: #!/usr/bin/perl package Scalar; use strict; use warnings; use Phone; sub sftr { print "this is Scalar::sftr"; } my $my_phone = Phone -> new ('','',''); $my_phone -> sftr ();Phone 继承了父类的方法。先看父类中调用子类的方法sftr (), 在子类中,调用了父类的sftr (), 只用这一句即可: $self -> SUPER::sftr ();SUPER即是Phone模块的符号表,其中添加了对Scalar类的继承,这句将执行父类的sftr () 方法。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |