理解 Perl 中的继承
面向对象编程有一个非常优秀且有用的概念叫做继承。继承简单来说就是父类的属性和方法可以被子类使用。因此,您不必一遍遍地编写相同的代码,只需继承父类即可。
例如,我们可以有一个 Employee 类,它继承自 Person 类。这被称为“is-a”关系,因为员工是人。Perl 有一个特殊的变量 @ISA 来辅助实现这一点。@ISA 控制(方法)继承。
使用继承时,需要考虑以下重要事项:
- Perl 会在指定对象的类中搜索给定的方法或属性,即变量。
- Perl 会搜索对象类 @ISA 数组中定义的类。
- 如果在步骤 1 或 2 中找不到方法,则 Perl 会使用 AUTOLOAD 子例程(如果在 @ISA 树中找到)。
- 如果仍然找不到匹配的方法,则 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 类继承了 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.
广告