There could be certain things which all shapes inherit, for example the location and color of the shape. In that case you have to use an abstract class because there would be object members defined and/or defined methods. However, you're right that in that form it could also be an interface.
public abstract class Shape
{
public Point center;
public Color color;
public Shape(Point center, Color color)
{
this.center = center;
this.color = color;
}
public abstract double area();
public abstract double perimeter();
}