婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > perl面向?qū)ο髮?shí)例

perl面向?qū)ο髮?shí)例

熱門(mén)標(biāo)簽:外呼電信系統(tǒng) 電話機(jī)器人哪里有賣 惠州龍門(mén)400電話要怎么申請(qǐng) 智能機(jī)器人電銷神器 okcc外呼系統(tǒng)怎么調(diào)速度 上海企業(yè)外呼系統(tǒng) 河南虛擬外呼系統(tǒng)公司 熱門(mén)電銷機(jī)器人 萬(wàn)利達(dá)百貨商場(chǎng)地圖標(biāo)注

首先讓我們來(lái)看看有關(guān) Perl 面向?qū)ο缶幊痰娜齻€(gè)基本定義:

1.  一個(gè)“對(duì)象”是指一個(gè)“有辦法知道它是屬于哪個(gè)類”的簡(jiǎn)單引用。(對(duì)象就是引用變量)
2.  一個(gè)“類”是指一個(gè)“有辦法給屬于它的對(duì)象提供一些方法”的簡(jiǎn)單的包。(類就是包)
3.  一個(gè)“方法”是指一個(gè)“接受一個(gè)對(duì)象或者類名稱作為第一個(gè)參數(shù)”的簡(jiǎn)單的子程序。(類的方法就是第一個(gè)參數(shù)為類名或?qū)ο蟮姆椒ǎ?/p>

一個(gè)類只是一個(gè)簡(jiǎn)單的包

和 C++ 不同,Perl 并不為類定義提供任何特殊語(yǔ)法。實(shí)際上類只是一個(gè)包而已。你可以把一個(gè)包當(dāng)作一個(gè)類用,并且把包里的函數(shù)當(dāng)作類的方法來(lái)用。不過(guò),有一個(gè)特殊的數(shù)組,叫做 @ISA,它說(shuō)明了“當(dāng) Perl 在當(dāng)前包中找不到想要的方法時(shí),應(yīng)當(dāng)繼續(xù)從哪兒去找”。這就是 Perl 實(shí)現(xiàn)“繼承”的關(guān)鍵。@ISA中的每個(gè)元素都是一個(gè)別的包的名字。當(dāng)類找不到方法時(shí),它會(huì)從 @ISA 數(shù)組中依次尋找(深度優(yōu)先)。類通過(guò)訪問(wèn) @ISA 來(lái)知道哪些類是它的基類。

所有的類都有一個(gè)隱含的基類(祖先類):"UNIVERSAL"。"UNIVERSAL" 類為它的子類提供幾個(gè)通用的類方法。它提供以下幾個(gè)方法:isa,can。其中isa用來(lái)判斷變量是否從某個(gè)類繼承而來(lái),can后面的參數(shù)則是一個(gè)方法,判斷這個(gè)方法是否在這個(gè)類或者基類中被定義。另外你可以給UNIVERSAL添加新的方法。一旦給它添加了新的方法,所有的class都可以調(diào)用。

給UNIBERSAL添加新方法的例子:

復(fù)制代碼 代碼如下:

sub UNIVERSAL::log()
{
my($self,$msg)=@_;
print "$self: $msg\n";
}

這樣就可以在每個(gè)類中調(diào)用這個(gè)函數(shù),并且log之前會(huì)把類名打印出來(lái)。

對(duì)象僅僅只是引用

Perl中的構(gòu)造器只是一個(gè)子程序,該子程序返回一個(gè)被bless處理的引用,這個(gè)經(jīng)過(guò) bless 處理的引用就是人們所說(shuō)的“對(duì)象”,而 bless 的作用就是用來(lái)說(shuō)明這個(gè)對(duì)象是隸屬于哪個(gè)“類”。

最簡(jiǎn)單的構(gòu)造器:

復(fù)制代碼 代碼如下:

package Critter;
sub new { bless {} }

如果你希望用戶不僅能夠用 "CLASS->new()" 這種形式來(lái)調(diào)用你的構(gòu)造函數(shù),還能夠以 "$obj->new()" 這樣的形式來(lái)調(diào)用的話,那么就這么做:

復(fù)制代碼 代碼如下:

sub new {
my $this = shift;
my $class = ref($this) || $this;
my $self = {};
bless $self, $class;
$self->initialize();
return $self;
}

一個(gè)方法就是一個(gè)簡(jiǎn)單的子程序

方法把它被調(diào)用時(shí)的對(duì)象或者類名稱當(dāng)作它的第一個(gè)參數(shù)。有兩種不同的調(diào)用方法的途徑,分別成為“調(diào)用類方法”和“調(diào)用實(shí)例方法”。類方法把類名當(dāng)作第一個(gè)參數(shù)。它提供針對(duì)類的功能,而不是針對(duì)某個(gè)具體的對(duì)象的功能。構(gòu)造器通常是一個(gè)類方法。大多數(shù)類方法簡(jiǎn)單地忽略第一個(gè)參數(shù),因?yàn)榉椒ㄖ雷约禾幵谑裁搭惱锩妫膊魂P(guān)心它是通過(guò)什么類來(lái)調(diào)用的。
Perl 提供了兩種不同的形式去調(diào)用一個(gè)方法。最簡(jiǎn)單的形式是采用箭頭符號(hào):

復(fù)制代碼 代碼如下:

        my $fred = Critter->find("Fred");
        $fred->display("Height", "Weight");

你可以早就熟悉了引用的 "->" 操作符。事實(shí)上,因?yàn)樯厦娴?$fred是一個(gè)指向了對(duì)象的引用,因此你也可以把箭頭操作符理解為另外一種形式的解引用。

出現(xiàn)在箭頭左邊的引用或者類名,將作為第一個(gè)參數(shù)傳遞給箭頭右邊的方法。所以上面的代碼就分別相當(dāng)于這樣:

復(fù)制代碼 代碼如下:

        my $fred = Critter::find("Critter", "Fred");
        Critter::display($fred, "Height", "Weight");

簡(jiǎn)單示例

1、說(shuō)明

本程序演示了在Perl中如何進(jìn)行面向?qū)ο缶幊蹋貉菔境绦虬瑑蓚€(gè)文件:person.pl 和 person.pm,把 person.pl 和 person.pm 放在當(dāng)前目錄下,運(yùn)行"perl person.pl"即可以看到結(jié)果。person.pm定義了名為person的類。person.pl中創(chuàng)建了person類的實(shí)例,并測(cè)試了person的成員方法。

2、person.pm的內(nèi)容

復(fù)制代碼 代碼如下:

#!/usr/bin/perl -w
package person;
use strict;

sub new {
my $class = shift();
print("CLASS = $class\n");
my $self = {};
$self->{"name"} = shift();
$self->{"sex"} = shift();
bless $self, $class;
return $self;
}

sub getName {
my ($self) = @_;
return $self->{"name"};
}

sub setName {
my ($self, $name) = @_;
$self->{"name"} = $name;
}

sub getSex {
my ($self) = @_;
return $self->{"sex"};
}

sub setSex {
my ($self, $sex) = @_;
$self->{"sex"} = $sex;
}

3、person.pl的內(nèi)容

復(fù)制代碼 代碼如下:

#!/usr/bin/perl -w
use strict;
use person;

sub main()
{
my $tom = person->new("Tom", "male");
my $kiss = person->new("Kiss", "female");
my @persons = ($tom, $kiss);
for my $p (@persons) {
printf("NAME: %s\tSEX: %s\n", $p->getName(), $p->getSex());
}
}

main();

4、程序運(yùn)行結(jié)果

復(fù)制代碼 代碼如下:

CLASS = person
CLASS = person
NAME: Tom SEX: male
NAME: Kiss SEX: female

標(biāo)簽:綏化 周口 秦皇島 淮安 周口 綿陽(yáng) 合肥 百色

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《perl面向?qū)ο髮?shí)例》,本文關(guān)鍵詞  perl,面向,對(duì)象,實(shí)例,perl,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《perl面向?qū)ο髮?shí)例》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于perl面向?qū)ο髮?shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 屯昌县| 双柏县| 商洛市| 澳门| 五大连池市| 合江县| 灌云县| 怀安县| 论坛| 大余县| 布尔津县| 河东区| 德兴市| 定襄县| 宿州市| 会昌县| 林州市| 雅安市| 太仆寺旗| 崇明县| 托克逊县| 湖州市| 井陉县| 越西县| 磐石市| 广南县| 桦甸市| 乐亭县| 肇源县| 梅州市| 沂水县| 彭阳县| 铁岭市| 古田县| 万全县| 鸡泽县| 西乌珠穆沁旗| 北辰区| 清原| 乌什县| 浦北县|