Perl 教程 之 Perl 面向对象 5

简介: Perl的面向对象编程涉及匿名哈希表或数组来存储对象属性。类通过`@ISA`数组实现继承,如Employee继承Person。在Employee.pm中声明`@ISA = qw(Person)`。在main.pl中,创建Employee对象并调用方法,显示继承功能。程序输出显示姓名的变化。

Perl 教程 之 Perl 面向对象 5

Perl 面向对象

Perl 中有两种不同地面向对象编程的实现:

一是基于匿名哈希表的方式,每个对象实例的实质就是一个指向匿名哈希表的引用。在这个匿名哈希表中,存储了所有的实例属性。

二是基于数组的方式,在定义一个类的时候,我们将为每一个实例属性创建一个数组,而每一个对象实例的实质就是一个指向这些数组中某一行索引的引用。在这些数组中,存储着所有的实例属性。

继承

Perl 里 类方法通过@ISA数组继承,这个数组里面包含其他包(类)的名字,变量的继承必须明确设定。

多继承就是这个@ISA数组包含多个类(包)名字。

通过@ISA只能继承方法,不能继承数据。

接下来我们创建一个 Employee 类继承 Person 类。

Employee.pm 文件代码如下所示:

实例

!/usr/bin/perl

package Employee;
use Person;
use strict;
our @ISA = qw(Person); # 从 Person 继承
现在 Employee 类包含了 Person 类的所有方法和属性,我们在 main.pl 文件中输入以下代码,并执行:

实例

!/usr/bin/perl

use Employee;

$object = new Employee( "小明", "王", 23234345);

获取姓名

$firstName = $object->getFirstName();

print "设置前姓名为 : $firstName\n";

使用辅助函数设置姓名

$object->setFirstName( "小强" );

通过辅助函数获取姓名

$firstName = $object->getFirstName();
print "设置后姓名为 : $firstName\n";
执行以上程序后,输出结果为:

$ perl main.pl
名字:小明
姓氏:王
编号:23234345
设置前姓名为 : 小明
设置后姓名为 : 小强

目录
相关文章
|
29天前
|
存储 Java 索引
Perl 教程 之 Perl 面向对象 7
在Perl OOP中,对象基于匿名哈希或数组实现,存储实例属性。当调用不存在的方法时,Perl查找AUTOLOAD来动态处理。析构函数DESTROY在对象销毁时自动调用,允许执行清理操作。不能修改传递给DESTROY的只读引用,但可写入对象本身。析构器可调用基类或其他类的DESTROY,但通常不手动调用。对象释放时,其所含对象也会自动销毁。
9 1
|
29天前
|
存储 索引 Perl
Perl 教程 之 Perl 面向对象 8
Perl面向对象教程展示了两种实现:通过匿名哈希表或数组存储对象属性。示例中,`MyClass`与子类`MySubClass`被定义,后者继承并扩展了父类方法。在主程序中,创建并调用了对象,演示了构造、方法调用、继承及自动调用析构函数的过程。
17 1
|
22天前
|
存储 数据安全/隐私保护 Perl
Perl 教程 之 Perl CGI编程 14
Perl CGI教程介绍了CGI(Common Gateway Interface)的概念,它是一种让服务器与客户端HTML交互的程序接口。CGI弥补了HTTP协议不识别用户身份的缺陷。Cookie用于身份验证,当用户访问脚本时,信息存储在环境变量HTTP_COOKIE中。示例代码展示了如何从HTTP_COOKIE检索Cookie信息,包括UserID和Password,输出用户ID和密码。
24 2
|
30天前
|
存储 索引 Perl
Perl 教程 之 Perl 面向对象 6
Perl 面向对象编程有两种实现:匿名哈希表和数组方式。教程中展示了基于哈希表的继承示例,Employee 类继承并重写了 Person 类的方法。在Employee中,`new`构造函数被重写,添加了新属性,`getFirstName`被重写,还新增了`setLastName`和`getLastName`方法。在主程序中,创建Employee对象并调用这些方法,显示了方法重写和辅助函数的使用效果。
20 3
|
30天前
|
存储 索引 Perl
Perl 教程 之 Perl 面向对象 4
Perl的面向对象涉及两种对象实现:匿名哈希表和数组。对象是类的实例,类是包含方法的Perl包。方法是接收对象引用作为首参的子程序。`bless()`函数用于构造对象。以下是一个Person类的例子,包含`new`构造器、`getFirstName`和`setFirstName`方法。在`employee.pl`脚本中,创建Person对象并演示了方法的使用。输出显示了姓名的设置和获取过程。
16 2
|
1月前
|
存储 索引 Perl
Perl 教程 之 Perl 面向对象 3
Perl的面向对象编程涉及两种实现:匿名哈希表引用和数组引用。对象是类(Perl包)中数据项的引用,方法是接收类名或对象作首参的子程序。
13 3
|
1月前
|
存储 索引 Perl
Perl 教程 之 Perl 面向对象 1
Perl的面向对象编程涉及两种实现:使用匿名哈希表存储对象属性的引用,或使用数组为每个属性创建行索引。对象是类的实例,类是包含方法的Perl包。方法是接受对象或类名作为首参的子程序。`bless()`函数用于构建对象,将引用与类关联。
13 3
|
1月前
|
存储 索引 Perl
Perl 教程 之 Perl 面向对象 2
Perl的面向对象编程涉及两种实现:匿名哈希表引用和数组引用。对象是类数据的引用,类是包含方法的Perl包。方法是接收类名作为首参的子程序。`bless()`函数用于构造对象。类定义为包,提供独立命名空间,文件通常以`.pm`结尾。例如: ```markdown .package Person # 类代码... .end ``` 简而言之,Perl的OOP基于引用,类是包,方法是子程序,`bless`构造对象,类定义创建命名空间。
15 2
|
25天前
|
缓存 移动开发 Perl
Perl 教程 之 Perl CGI编程 6
Perl CGI教程介绍了CGI(Common Gateway Interface)是一种让服务器与客户端HTML交互的程序接口。GET方法通过URL传递编码数据,例如`/cgi-bin/test.cgi?name=百度&url=http://www.baidu.com`。CGI脚本示例展示了如何解析GET请求中的参数并生成HTML响应。注意,GET请求可能出现在浏览器历史和缓存中,不适合敏感数据传输,并且有长度限制。
10 1
|
26天前
|
移动开发 Perl
Perl 教程 之 Perl CGI编程 3
**Perl CGI教程摘要:** CGI是NCSA维护的通用网关接口,让服务器与HTML客户端交互。HTTP头部如`Content-type:text/html`指示内容类型。常见头部包括`Content-type`定义MIME类型,`Expires`设定过期时间,`Location`用于重定向,`Last-modified`标记最后修改日期,`Content-length`表示内容长度,和`Set-Cookie`用于设置Cookie。
8 1

相关实验场景

更多