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
设置前姓名为 : 小明
设置后姓名为 : 小强

目录
相关文章
|
算法 Linux 数据安全/隐私保护
Linux权限管理:深入理解setuid、setgid、seteuid和setegid
Linux权限管理:深入理解setuid、setgid、seteuid和setegid
1414 0
|
Ubuntu 网络协议 关系型数据库
Ubuntu 14.04 LTS 发布 (附新特性介绍及下载镜像站列表)
LTS 是 Ubuntu 的长期支持版,因此 Ubuntu 14.04 支持周期长达 3-5 年。因此 Ubuntu 14.04 是追求稳定的用户和企业的最佳选择。
2888 0
Ubuntu 14.04 LTS 发布 (附新特性介绍及下载镜像站列表)
|
Go
Golang语言之函数(func)基础篇
这篇文章深入讲解了Golang语言中函数的定义和使用,包括函数的引入原因、使用细节、定义语法,并通过多个案例展示了如何定义不返回任何参数、返回一个或多个参数、返回值命名、可变参数的函数,同时探讨了函数默认值传递、指针传递、函数作为变量和参数、自定义数据类型以及返回值为切片类型的函数。
411 2
Golang语言之函数(func)基础篇
|
Python
Python中的push方法详解与实例
Python中的push方法详解与实例
236 3
|
安全 应用服务中间件 网络安全
Python 渗透测试:漏洞的批量搜索与利用.(GlassFish 任意文件读取)
Python 渗透测试:漏洞的批量搜索与利用.(GlassFish 任意文件读取)
248 11
|
Java Maven Android开发
eclipse更改maven的本地路径和外部仓库地址
eclipse更改maven的本地路径和外部仓库地址
761 1
|
数据采集 网络协议 API
Python网络编程库介绍
【4月更文挑战第3天】Python的网络编程库包括socket、requests、urllib、paramiko、Twisted和asyncio。socket提供底层套接字编程,requests简化HTTP请求,urllib处理简单HTTP任务。paramiko支持SSHv2协议,适用于远程管理。Twisted是事件驱动的网络引擎,适合高性能应用。asyncio是Python 3.4+的异步IO库,用于编写并发代码。开发者应根据需求选择合适的库,考虑版本兼容性、文档和社区支持。
|
Linux Go Windows
frp 编译
frp 编译
955 1
|
移动开发 监控 网络协议
linux如何查看websocket的连接
linux如何查看websocket的连接
1631 0
|
Go 数据安全/隐私保护 开发者
Go语言import真的很简单,分分钟学会!
Go语言import真的很简单,分分钟学会!
1184 1