А не, код переписывать сильно не придется, методы теже, просто расчет дилегируют внутри, но все равно смысл?
Встречный вопрос - а зачем оптимизировать, если метод базового класса (пускай мы действительно вынесли вычисление площади в базовый класс) работает?
Следующий вопрос - у круга тоже есть площадь. И он тоже является фигурой с методом draw
Но очевидно, что для него площадь надо вычислять совсем иначе. Так может, оставить реализацию потомкам? Template method вполне подойдёт. Или даже лучше, factory method, который возвращает объект, умеющий считать площадь и какую-нибудь ещё специфику, типа периметра