そこのthisは単に拡張メソッドのマーク
通常のthisとは違う意味

拡張メソッドは親クラスからは呼べないからそれを定義してもShapeクラスから直接呼べない
RectangleやCircleにキャストすることになる
そこで登場するのがパターンマッチングと