理解 Perl 中的繼承


面向物件程式設計有一個非常優秀且有用的概念叫做繼承。繼承簡單來說就是父類的屬性和方法可以被子類使用。因此,您不必一遍遍地編寫相同的程式碼,只需繼承父類即可。

例如,我們可以有一個 Employee 類,它繼承自 Person 類。這被稱為“is-a”關係,因為員工是人。Perl 有一個特殊的變數 @ISA 來輔助實現這一點。@ISA 控制(方法)繼承。

使用繼承時,需要考慮以下重要事項:

  • Perl 會在指定物件的類中搜索給定的方法或屬性,即變數。
  • Perl 會搜尋物件類 @ISA 陣列中定義的類。
  • 如果在步驟 1 或 2 中找不到方法,則 Perl 會使用 AUTOLOAD 子例程(如果在 @ISA 樹中找到)。
  • 如果仍然找不到匹配的方法,則 Perl 會在標準 Perl 庫中提供的 UNIVERSAL 類(包)中搜索該方法。
  • 如果仍然找不到方法,則 Perl 將放棄並引發執行時異常。

因此,要建立一個新的 Employee 類來繼承 Person 類的屬性和方法,我們只需編寫如下程式碼:將此程式碼儲存到 Employee.pm 檔案中。

#!/usr/bin/perl
package Employee;
use Person;
use strict;
our @ISA = qw(Person);       # inherits from Person

現在 Employee 類繼承了 Person 類中所有的方法和屬性,您可以像下面這樣使用它們:使用 main.pl 檔案進行測試:

#!/usr/bin/perl
use Employee;
$object = new Employee( "Mohammad", "Saleem", 23234345);
# Get first name which is set using constructor.
$firstName = $object->getFirstName();
print "Before Setting First Name is : $firstName\n";
# Now Set first name using helper function.
$object->setFirstName( "Mohd." );
# Now get first name set by helper function.
$firstName = $object->getFirstName();
print "After Setting First Name is : $firstName\n";

執行上述程式後,將產生以下結果:

First Name is Mohammad
Last Name is Saleem
SSN is 23234345
Before Setting First Name is : Mohammad
Before Setting First Name is : Mohd.

更新於:2019-12-02

1K+ 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.