2009-09-02 72 views

回答

16

您可以(如果你使用MooseMooseX::Declare或角色)創建一個純虛類:

​​

但執行將在運行時。一般來說,接口是需要的,因爲該語言不支持多繼承並且是嚴格鍵入的。 Perl支持多重繼承和(使用Moose),就像稱爲角色的多重繼承(但更好),它是動態類型的。嚴格對比動態打字歸結爲鴨子打字(如果它像鴨子一樣呱呱叫,像鴨子一樣走路(),像鴨子一樣游泳(),然後它是一隻鴨子)。在Perl中,你說:

if ($some_obj->can("quack") { 
    $some_obj->quack; 
} else { 
    croak "incompatible class type: ", ref $some_obj; 
} 
11

在傳統的Perl OO中,很少執行。你可以使用$ obj-> can('methodname')來選擇你正在使用的類型,但是沒有什麼比接口更好的了。

(但看看駝鹿,在那裏角色可以你以後)。

+0

+1對於駝鹿角色。特別是如果你是來自嚴格的OO背景/偏好,它會做你喜歡的。 – 2009-09-02 11:46:18

+0

http://stackoverflow.com/questions/1341903/c-like-usage-of-moose-with-perl-for-oop – draegtun 2009-09-05 19:20:14

10

但當然! Class::Interface

這就是說,我會先看看穆斯。這太棒了。需要

+1

是的,對,CPAN擁有一切。 ;-) – ijw 2009-09-02 11:42:08

1

接口,因爲語言不支持

接口是一個面向對象的概念。由於技術問題,不需要它們。