スーパークラスからメソッドを呼び出すサブクラスがあります。スーパークラスのメソッドは、スーパークラスで抽象(実際には抽象ではない)として定義されているが、サブクラスに実装されているメソッドを使用します。
例えば:
package BaseClass;
sub new
{
}
sub method1 {
return someAbstractMethod();
}
sub someAbtsractMethod
{
die "oops, this is an abstract method that should " .
"be implemented in a subclass" ;
}
1;
package SubClass;
sub new
{
}
sub someAbtsractMethod
{
print "now we implement the asbtract method";
}
1;
今私がするとき:
$sub = new SubClass();
$sub->method1();
...抽象メッセージを呼び出し、指定されたエラーメッセージを受け取ります。スーパークラスから抽象メソッドを削除し、実装をサブクラスのままにすると、メソッドが認識されず、サブルーチンの抽象メソッドが見つからないというエラーが発生します。