Perl 类继承简单讲解

在用面向对象编程范式时,常用到类的继承。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 () 方法。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值