亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Perl > 正文

perl面向對象實例

2020-10-31 15:05:21
字體:
來源:轉載
供稿:網友

首先讓我們來看看有關 Perl 面向對象編程的三個基本定義:

1.  一個“對象”是指一個“有辦法知道它是屬于哪個類”的簡單引用。(對象就是引用變量)
2.  一個“類”是指一個“有辦法給屬于它的對象提供一些方法”的簡單的包。(類就是包)
3.  一個“方法”是指一個“接受一個對象或者類名稱作為第一個參數”的簡單的子程序。(類的方法就是第一個參數為類名或對象的方法)

一個類只是一個簡單的包

和 C++ 不同,Perl 并不為類定義提供任何特殊語法。實際上類只是一個包而已。你可以把一個包當作一個類用,并且把包里的函數當作類的方法來用。不過,有一個特殊的數組,叫做 @ISA,它說明了“當 Perl 在當前包中找不到想要的方法時,應當繼續從哪兒去找”。這就是 Perl 實現“繼承”的關鍵。@ISA中的每個元素都是一個別的包的名字。當類找不到方法時,它會從 @ISA 數組中依次尋找(深度優先)。類通過訪問 @ISA 來知道哪些類是它的基類。

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

給UNIBERSAL添加新方法的例子:

復制代碼 代碼如下:

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

這樣就可以在每個類中調用這個函數,并且log之前會把類名打印出來。

對象僅僅只是引用

Perl中的構造器只是一個子程序,該子程序返回一個被bless處理的引用,這個經過 bless 處理的引用就是人們所說的“對象”,而 bless 的作用就是用來說明這個對象是隸屬于哪個“類”。

最簡單的構造器:

復制代碼 代碼如下:

package Critter;
sub new { bless {} }

如果你希望用戶不僅能夠用 "CLASS->new()" 這種形式來調用你的構造函數,還能夠以 "$obj->new()" 這樣的形式來調用的話,那么就這么做:

復制代碼 代碼如下:

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

一個方法就是一個簡單的子程序

方法把它被調用時的對象或者類名稱當作它的第一個參數。有兩種不同的調用方法的途徑,分別成為“調用類方法”和“調用實例方法”。類方法把類名當作第一個參數。它提供針對類的功能,而不是針對某個具體的對象的功能。構造器通常是一個類方法。大多數類方法簡單地忽略第一個參數,因為方法知道自己處在什么類里面,也不關心它是通過什么類來調用的。
Perl 提供了兩種不同的形式去調用一個方法。最簡單的形式是采用箭頭符號:

復制代碼 代碼如下:

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

你可以早就熟悉了引用的 "->" 操作符。事實上,因為上面的 $fred是一個指向了對象的引用,因此你也可以把箭頭操作符理解為另外一種形式的解引用。

出現在箭頭左邊的引用或者類名,將作為第一個參數傳遞給箭頭右邊的方法。所以上面的代碼就分別相當于這樣:

復制代碼 代碼如下:

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

簡單示例

1、說明

本程序演示了在Perl中如何進行面向對象編程:演示程序包含兩個文件:person.pl 和 person.pm,把 person.pl 和 person.pm 放在當前目錄下,運行"perl person.pl"即可以看到結果。person.pm定義了名為person的類。person.pl中創建了person類的實例,并測試了person的成員方法。

2、person.pm的內容

復制代碼 代碼如下:

#!/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的內容

復制代碼 代碼如下:

#!/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、程序運行結果

復制代碼 代碼如下:

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品亚洲激情| 久久久久久久久久国产| 久久精品国产v日韩v亚洲| 夜夜嗨av一区二区三区免费区| 午夜免费在线观看精品视频| 日韩美女av在线免费观看| 国产精品午夜视频| 日韩av在线免费观看| 国产999精品久久久影片官网| 亚洲va久久久噜噜噜久久天堂| 中文字幕国产亚洲2019| 日韩在线欧美在线国产在线| 97精品久久久| 中文字幕精品视频| 成人免费高清完整版在线观看| 国产精品久久综合av爱欲tv| 亚洲一级一级97网| 亚洲美女福利视频网站| 国产精品美女www| 北条麻妃一区二区在线观看| 日韩在线观看免费全集电视剧网站| 欧美视频在线观看免费网址| 69国产精品成人在线播放| 国产精品久久久久久久美男| 北条麻妃一区二区在线观看| 国产区精品在线观看| 亚洲码在线观看| 中文字幕国产亚洲| 九九热r在线视频精品| 成人激情视频小说免费下载| 亚洲高清在线观看| 亚洲欧美日韩成人| 欧美日韩色婷婷| 日韩免费在线播放| 久久精品国产电影| 久久亚洲精品一区| www.欧美精品| 91色在线视频| 影音先锋欧美在线资源| 成人黄色av免费在线观看| 日韩av在线精品| 亚洲a成v人在线观看| 91精品国产免费久久久久久| 中文字幕亚洲在线| 欧美日韩视频免费播放| 久久99精品国产99久久6尤物| 日韩第一页在线| 最新国产成人av网站网址麻豆| 久久99热精品| 精品国产一区二区三区久久久狼| 亚洲人成网站免费播放| 亚洲性av在线| 在线国产精品视频| 日韩小视频在线观看| 久久久久久18| 日韩午夜在线视频| 亚洲第一页中文字幕| 欧美黑人狂野猛交老妇| 2019中文字幕免费视频| 68精品国产免费久久久久久婷婷| 成人性生交大片免费看小说| 国产91成人在在线播放| 国外成人免费在线播放| 久热国产精品视频| 日韩资源在线观看| 美女黄色丝袜一区| 国产日本欧美一区| 日韩免费电影在线观看| 欧美日韩亚洲一区二区三区| 久久精品视频在线播放| 一区二区中文字幕| 欧美激情精品久久久久久免费印度| 亚洲成人精品视频| 欧美多人乱p欧美4p久久| 大荫蒂欧美视频另类xxxx| 国产色综合天天综合网| 中文字幕欧美日韩精品| 91情侣偷在线精品国产| 国产精品jizz在线观看麻豆| 欧美成人午夜激情| 日韩成人中文字幕在线观看| 色诱女教师一区二区三区| 国产精品久久国产精品99gif| 色婷婷**av毛片一区| 国产精品女人久久久久久| 色综合久久悠悠| 欧洲亚洲免费在线| 亚洲二区中文字幕| 美女少妇精品视频| 在线精品视频视频中文字幕| 亚洲韩国日本中文字幕| 91久久在线视频| 国产精品免费观看在线| 91av在线看| 欧美一二三视频| 日韩av在线电影网| 一本大道久久加勒比香蕉| 亚洲r级在线观看| 亚洲激情在线观看视频免费| 欧美精品免费在线| 久久久免费av| 欧美亚洲另类激情另类| 538国产精品一区二区免费视频| 国产成人亚洲综合91| 欧日韩在线观看| 国产精品久久久久不卡| 亚洲美女又黄又爽在线观看| 亚洲最大福利视频网站| 成人激情在线播放| 国产日韩中文字幕在线| 亚洲人成网站999久久久综合| 亚洲护士老师的毛茸茸最新章节| 日韩欧美在线字幕| 国产欧美精品久久久| 不用播放器成人网| 69av在线播放| 高清视频欧美一级| 日产精品久久久一区二区福利| 精品成人av一区| 久久久久中文字幕2018| 国产精品黄页免费高清在线观看| 日韩av在线网址| 成人国产精品一区| 久久视频精品在线| 国产成人高清激情视频在线观看| 国产精品欧美日韩| 5252色成人免费视频| 亚洲男人7777| 在线看国产精品| 国产亚洲精品激情久久| 国产日韩中文字幕在线| 91成人在线观看国产| 九色91av视频| 78m国产成人精品视频| 亚洲黄色av女优在线观看| 国产一级揄自揄精品视频| www.欧美三级电影.com| 亚洲欧美日韩一区二区在线| 97成人超碰免| 欧美激情久久久久| 日韩av在线网页| 日韩精品免费看| 亚洲国产中文字幕久久网| 日本午夜人人精品| 亚洲国产天堂久久综合网| 中文字幕精品视频| 亚洲精品一区在线观看香蕉| 影音先锋欧美在线资源| 亚洲第一中文字幕在线观看| 欧美高清一级大片| 伊人亚洲福利一区二区三区| 亚洲三级免费看| 欧美一区二区.| 一区二区欧美日韩视频| 亚洲欧美制服另类日韩| 国产精品久久久久久中文字| 久久精品一区中文字幕| 精品在线小视频| 欧美性少妇18aaaa视频| 成人h片在线播放免费网站| 日韩欧美一区二区三区久久| 亚洲二区中文字幕| 日韩av在线免费观看一区| 国产精品女视频|