※ ChatGPTを利用し、要約された質問です(原文:Perlの継承について)
Perlの継承について
このQ&Aのポイント
クラスSubclassはクラスBaseclassを継承し、myfunc1をオーバーライドしています。
Subclassのmyfunc1を呼び出す方法はありますか?Baseclassのmyfunc1を呼び出す方法を教えてください。
Baseclassのmyfunc2内の$self->myfunc1(...)の記載をBaseclass::myfunc1($self, ...)に変更することで、Baseclassのmyfunc1を呼び出せる可能性があります。
Perlの継承について
(1)
クラス Subclass (baseclassを継承)
myfunc1
(2)
クラス Baseclass
myfunc1
myfunc2 (myfunc2内でmyfuncを呼び出している)
(3)
SubclassとBaseclassのmyfunc1は、引数が異なる。
上記のようにクラスSubclassとクラスBaseclassがあり、SubclassはBaseclassを継承しています。
ここで、SubclassではBaseclassのmyfunc1をオーバーライドしています。
1: my $obj = Subclass->new();
2: $obj->myfunc2();
とすると、2にて、Subclassにて実装したmyfunc1が呼び出されます。これを、Baseclassのmyfunc1を呼び出させる方法はないでしょうか?
(Baseclassはその他のクラスからも継承されておりいじりたくない。
しかし、SubclassはBaseclassを継承したうえでmyfunc1をオーバーライドしたい。)
Baseclassのmyfunc2内の
$self->myfunc1(...) という記載を、
Baseclass::myfunc1($self, ...)
という記載にしてしまえば動きそうな気もするのですが、何かつっこみがあればお願いします。
お礼
おそくなりすいません。回答ありがとうございます。参考にさせてもらいます。