六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

Perl教學(xué)(13)Perl的面向?qū)ο缶幊讨?

[摘要]十一、子類方法的重載繼承的好處在于可以獲得基類輸出的方法的功能,而有時(shí)需要對(duì)基類的方法重載獲得更具體或不同的功能。下面在Bean.pm類中加入方法printType(),代碼如下:sub printType {my $class = shift @_;print "The type of...
十一、子類方法的重載
繼承的好處在于可以獲得基類輸出的方法的功能,而有時(shí)需要對(duì)基類的方法重載獲得更具體或不同的功能。下面在Bean.pm類中加入方法printType(),代碼如下:

sub printType {
my $class = shift @_;
print "The type of Bean is $class->{'Bean'} \n";
}
然后更新其@EXPORT數(shù)組來輸出:
@EXPORT = qw ( setBeanType , printType );
現(xiàn)在來調(diào)用函數(shù)printType(),有三種調(diào)用方法:

$cup->Coffee::printType();
$cup->printType();
$cup->Bean::printType();
輸出分別如下:

The type of Bean is Mixed
The type of Bean is Mixed
The type of Bean is Mixed
為什么都一樣呢?因?yàn)樵谧宇愔袥]有定義函數(shù)printType(),所以實(shí)際均調(diào)用了基類中的方法。如果想使子類有其自己的printType()函數(shù),必須在Coffee.pm類中加以定義:

#
# This routine prints the type of $class->{'Coffee'}
#
sub printType {
my $class = shift @_;
print "The type of Coffee is $class->{'Coffee'} \n";
}
然后更新其@EXPORT數(shù)組:
@EXPORT = qw(setImports, declareMain, closeMain, printType);
現(xiàn)在輸出結(jié)果變成了:

The type of Coffee is Instant
The type of Coffee is Instant
The type of Bean is Mixed
現(xiàn)在只有當(dāng)給定了Bean::時(shí)才調(diào)用基類的方法,否則直接調(diào)用子類的方法。
那么如果不知道基類名該如何調(diào)用基類方法呢?方法是使用偽類保留字SUPER::。在類方法內(nèi)使用語(yǔ)法如:$this->SUPER::function(...argument list...); ,它將從@ISA列表中尋找。剛才的語(yǔ)句用SUPER::替換Bean::可以寫為$cup->SUPER::printType(); ,其結(jié)果輸出相同,為:

The type of Bean is Mixed
十二、Perl類和對(duì)象的一些注釋
OOP的最大好處就是代碼重用。OOP用數(shù)據(jù)封裝來隱藏一些復(fù)雜的代碼,Perl的包和模塊通過my函數(shù)提供數(shù)據(jù)封裝功能,但是Perl并不保證子類一定不會(huì)直接訪問基類的變量,這確實(shí)減少了數(shù)據(jù)封裝的好處,雖然這種動(dòng)作是可以做到的,但卻是個(gè)很壞的編程風(fēng)格。
注意:
1、一定要通過方法來訪問類變量。
2、一定不要從模塊外部直接訪問類變量。
當(dāng)編寫包時(shí),應(yīng)該保證方法所需的條件已具備或通過參數(shù)傳遞給它。在包內(nèi)部,應(yīng)保證對(duì)全局變量的訪問只用通過方法傳遞的引用來訪問。對(duì)于方法要使用的靜態(tài)或全局?jǐn)?shù)據(jù),應(yīng)該在基類中用local()來定義,子類通過調(diào)用基類來獲取。有時(shí),子類可能需要改變這種數(shù)據(jù),這時(shí),基類可能就不知道怎樣去尋找新的數(shù)據(jù),因此,這時(shí)最好定義對(duì)該數(shù)據(jù)的引用,子類和基類都通過引用來改變?cè)摂?shù)據(jù)。
最后,你將看到如下方式來使用對(duì)象和類:
use coffee::Bean;
這句語(yǔ)句的含義是“在@INC數(shù)組所有目錄的Coffee子目錄來尋找Bean.pm”。如果把Bean.pm移到./Coffee目錄,上面的例子將用這一use語(yǔ)句來工作。這樣的好處是有條理地組織類的代碼。再如,下面的語(yǔ)句:
use Another::Sub::Menu;
意味著如下子目錄樹:
./Another/Sub/Menu.pm




主站蜘蛛池模板: 四虎免费在线观看 | 欧洲美女高清一级毛片 | 四虎影库永久在线 | 青青爽国产手机在线观看免费 | 亚洲第一视频区 | 午夜小影院 | 深夜视频在线播放视频在线观看免费观看 | 欧美特黄一级大黄录像 | 色婷婷亚洲十月十月色天 | 亚洲欧美啪啪 | 性生大片一级毛片免费观看 | 亚洲成av人片在线观看天堂无码 | 天美传媒影视在线网址 | 青娱乐在线免费视频 | 天天狠天天透天干天天怕处 | 探花2700视频| 日韩专区视频 | 最近2019中文字幕大全第二页 | 日本黄网址 | 色噜噜狠狠色综合日日 | 中文字幕无码中文字幕有码 | 四虎影视国产精品亚洲精品hd | 欧美亚洲国产精品 | 亚洲免费片 | 天天干夜夜看 | 三级在线视频 | 四虎永久在线 | 中国黄色毛片 大片 | 青青草香蕉 | 日韩大片观看网址 | 亚洲福利视频网址 | 无颜之月第05集免费观看 - 83屋 | 四虎免费大片aⅴ入口 | 亚洲91在线 | 色猫咪av在线网址 | 婷婷丁香激情 | 亚洲一区 在线播放 | 亚洲综合色在线观看 | 中文字幕一区二区三区四区五区人 | 我要操影院 | 色男人综合 |