面向对象的程序设计具有非常好的和有用的概念,称为继承。继承仅表示父类的属性和方法可用于子类。因此,您不必一次又一次地编写相同的代码,只需继承父类即可。
例如,我们可以有一个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.