麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > Perl > 正文

perl面向對象實例

2020-06-04 20:32:14
字體:
來源:轉載
供稿:網友

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

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

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黄色片在线观看网站 | 91久久久久久久 | 精品国产乱码久久久久久丨区2区 | 成人一区二区三区四区 | 色999国产| 制服丝袜成人动漫 | 涩涩99 | 91精品国产乱码久久久久久久久 | 国产午夜精品久久久久婷 | av电影在线免费 | chinesexxxx刘婷hd| 狠狠久久| 国产精品久久久久一区二区 | 国产精品久久久久久久久久久久久久久久 | 中文字幕涩涩久久乱小说 | 91成人在线网站 | 最新亚洲国产 | 久久国产精品一区 | 亚洲欧洲日产v特级毛片 | 久色porn| 国产乱淫a∨片免费观看 | 亚洲精品aⅴ中文字幕乱码 欧美囗交 | 久久网国产精品 | 精品国产91久久久久久久妲己 | 91在线色视频 | 92看片淫黄大片欧美看国产片 | 成人福利视频网站 | asian超清日本肉体pics | 麻豆91精品91久久久 | 欧美雌雄另类xxxxx | 特色一级黄色片 | 成人羞羞在线观看网站 | 深夜福利久久久 | 一区二区久久电影 | 久久国产精品成人免费网站 | 亚洲成人免费电影 | 久久综合一区二区 | 中文字幕在线观看免费 | 一级毛片电影网 | 精品久久久久久久久久久久久 | 欧美黄色看 |