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

首頁 > 編程 > Perl > 正文

perl面向對象實例

2020-02-23 19:44:40
字體:
來源:轉載
供稿:網友

C++的學習讓人感覺到自己很有成就感,也可以實現編程的絕對主力,嚴謹、高效、細致。雖然它的語法很復雜,但有規律可循,那么下面就讓武林技術頻道小編帶大家了解perl面向對象實例吧!

首先讓我們來看看有關 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

相信大家通過武林技術頻道的介紹已經了解了perl面向對象實例,希望能夠幫到大家,我們也要嚴格按照上述方法進行操作。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品中文在线| 91黑丝在线观看| 成人情趣片在线观看免费| 国产视频精品在线| 亚洲xxx自由成熟| 日本午夜精品理论片a级appf发布| 中文字幕亚洲精品| 亚洲成人在线视频播放| 91理论片午午论夜理片久久| 日韩第一页在线| 欧美福利视频在线观看| 午夜伦理精品一区| 欧美午夜激情视频| 97在线观看视频| 精品久久久久久久久中文字幕| 欧美电影免费观看大全| 精品国产老师黑色丝袜高跟鞋| 亚洲国产成人久久综合| 亚洲一区亚洲二区| 国内自拍欧美激情| 亚洲美女又黄又爽在线观看| 97视频在线观看成人| 国产精品天天狠天天看| 久久精品国产亚洲精品| 日本精品一区二区三区在线| 亚洲图片制服诱惑| 亚洲精品福利在线观看| www亚洲精品| 国产亚洲日本欧美韩国| 色七七影院综合| 国产日韩一区在线| 亚洲国内精品视频| 中国china体内裑精亚洲片| 欧美另类69精品久久久久9999| 91热精品视频| 亚洲成色999久久网站| 亚洲深夜福利网站| 另类色图亚洲色图| 96pao国产成视频永久免费| 国精产品一区一区三区有限在线| 久久久亚洲欧洲日产国码aⅴ| 国产精品久久久久久久久久尿| 亚洲free性xxxx护士白浆| 欧美成人h版在线观看| 国产欧美日韩中文字幕| 久久免费福利视频| 91欧美视频网站| 欧美一区二区三区免费观看| 一本色道久久综合亚洲精品小说| 国产精品爽黄69| 91精品综合久久久久久五月天| 在线电影欧美日韩一区二区私密| 亚洲国产天堂久久综合网| 国产高清视频一区三区| 亚洲国产欧美在线成人app| 亚洲新声在线观看| 国产91露脸中文字幕在线| 欧美韩国理论所午夜片917电影| 亚洲国产天堂久久国产91| 久久在线精品视频| 欧美专区国产专区| 国产在线观看精品一区二区三区| 亚洲品质视频自拍网| 久久久精品在线观看| 精品国产欧美一区二区五十路| 国产精品99蜜臀久久不卡二区| 欧美在线一级视频| xxxxxxxxx欧美| 中文字幕国产精品久久| 91在线精品播放| 亚洲欧美国产精品久久久久久久| 在线观看欧美www| 国产精品爽黄69| 欧美成人高清视频| 久久久久久香蕉网| 日韩在线中文字幕| 欧美色另类天堂2015| 欧美成人在线影院| 日韩在线观看免费全| 日韩精品高清视频| 亚洲视频在线观看视频| 久久久久久久久久久免费精品| 欧美日本中文字幕| 亚洲福利在线看| 精品国产一区二区三区久久狼5月| 亚洲精品成人久久久| 日韩a**站在线观看| 欧美日韩国产一区二区三区| 中文亚洲视频在线| 欧美极品美女电影一区| 91精品久久久久久久久不口人| 欧美精品videosex牲欧美| 日韩av免费网站| 国产精品综合久久久| 久久综合久久美利坚合众国| 久久精品视频中文字幕| 精品中文字幕在线观看| 亚洲欧洲日韩国产| 亚洲国内高清视频| 欧美精品少妇videofree| 欧美成人亚洲成人日韩成人| 色偷偷噜噜噜亚洲男人| 久久国产精品久久久久| 国产日韩欧美在线看| 国产成人精彩在线视频九色| 久久视频这里只有精品| 亚洲国产精品成人va在线观看| 日韩精品在线观| 最近免费中文字幕视频2019| 欧美成aaa人片免费看| 日韩中文字幕欧美| 欧美精品在线观看91| 国产成人精品电影| 久久久久久久久国产精品| 欧美孕妇与黑人孕交| 国产精品久久久亚洲| 久久精品成人一区二区三区| 欧美高清视频一区二区| 91精品综合视频| 日韩欧美国产骚| 欧美成人免费小视频| 中文字幕日韩av电影| 亚洲最大福利视频| 欧美国产亚洲精品久久久8v| 九九精品视频在线观看| 欧美一级大胆视频| 久久亚洲精品一区二区| 亚洲精品国产品国语在线| 国产精品久久久久久久9999| 亚洲一区二区中文字幕| 欧美性猛交xxxxx水多| 成人伊人精品色xxxx视频| 欧美激情精品久久久久久久变态| 国产激情综合五月久久| 欧美精品成人在线| 日韩电影中文字幕一区| 欧美自拍大量在线观看| 国产精品成人国产乱一区| 国产精品香蕉在线观看| 国产精品欧美一区二区| 国内自拍欧美激情| 国产成人在线视频| 国产精品第一区| 在线性视频日韩欧美| 在线成人中文字幕| 国产精品久久久久久久午夜| 91社区国产高清| 欧美午夜视频在线观看| 欧美另类99xxxxx| 午夜精品www| 精品动漫一区二区三区| 久久好看免费视频| 久久久国产一区二区三区| 丝袜亚洲另类欧美重口| 91久久夜色精品国产网站| 亚洲日韩欧美视频| 亚洲国产婷婷香蕉久久久久久| 亚洲自拍欧美另类| 日韩精品高清视频| 亚洲国产精品va| 国产亚洲一区精品| 日韩av电影在线播放| 精品网站999www| 欧洲永久精品大片ww免费漫画|