Well ... first of all if you want to redefine a method from the base class, you should declare it virtual in the base class:
This is the way to do when you want to redefine methods in derived classes. Then, because the Shape is something generic, so generic that you probably don't want to have an instance of this class (since it wouldn't have any sens), you will wish to make it an abstract class (a class that cannot be instantiate). To do so, it is enough to set one of its methods to 0 as mentioned by codewalker:
virtualfloat GetArea() = 0;
And doing so, you don't need body for this method in the generic class, as mentioned by codewalker.