processPost()でBasePost型にしているのはなぜですか?

抽象クラスにしておくと、そのメソッドが実装されていることが保証されるからです。
2020年6月21日
ユーザー

お世話になっております。
以下のコードで質問があります。

function processPost(BasePost $post) 
{
  $post->show();
}

なぜ、processPostの引数の型をBasePost型にしたのでしょうか?

PostやSponsoredPost型であれば、抽象メソッドの中身が書かれているのでshowメソッドが実行されるということに違和感がありませんが、BasePostは抽象メソッドのままです。それでどうして、showメソッドがprocessPostの中で実行されるのでしょうか?

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(5)