了解Perl中的继承

面向对象的程序设计具有非常好的和有用的概念,称为继承。继承仅表示父类的属性和方法可用于子类。因此,您不必一次又一次地编写相同的代码,只需继承父类即可。

例如,我们可以有一个Employee类,该类继承自Person。这被称为“ isa”关系,因为员工是一个人。Perl有一个特殊的变量@ISA,以帮助解决此问题。@ISA控制(方法)继承。

以下是使用继承时要考虑的重点-

  • Perl在指定对象的类中搜索给定的方法或属性,即变量。

  • Perl搜索对象类的@ISA数组中定义的类。

  • 如果在步骤1或2中找不到任何方法,那么如果在@ISA树中找到一个方法,则Perl将使用AUTOLOAD子例程。

  • 如果仍找不到匹配的方法,则Perl在标准Perl库的一部分附带的UNIVERSAL类(包)中搜索该方法。

  • 如果仍然没有找到该方法,则Perl放弃并引发运行时异常。

因此,要创建一个新的Employee类以继承Person类的方法和属性,我们只需编写如下代码:将此代码保存在Employee.pm中。

#!/usr/bin/perl
package Employee;
use Person;
use strict;
our @ISA = qw(Person);       # inherits from Person

现在,Employee Class具有从Person类继承的所有方法和属性,您可以按如下方式使用它们:使用main.pl文件对其进行测试-

#!/usr/bin/perl
use Employee;
$object = new Employee( "Mohammad", "Saleem", 23234345);
# Get first name which is set using constructor.
$firstName = $object->getFirstName();
print "Before Setting First Name is : $firstName\n";
# Now Set first name using helper function.
$object->setFirstName( "Mohd." );
# Now get first name set by helper function.
$firstName = $object->getFirstName();
print "After Setting First Name is : $firstName\n";

当我们执行上面的程序时,它产生以下结果-

First Name is Mohammad
Last Name is Saleem
SSN is 23234345
Before Setting First Name is : Mohammad
Before Setting First Name is : Mohd.