На самом деле есть четыре ошибки:
1) public abstract Shape {
должно быть public abstract class Shape {
2) shapes.add(new Shape()); // Line ONE
, потому что форма абстрактна и не может быть реализована.
3) shapes.add(new Square()); // Line ONE
Мы не можем использовать метод non-static
в области видимости static
, пока вы не пометите его как статический.
4) ((Square)shapes.get(0)).draw(); // Line TWO;
, так как shape.get (0) возвращает экземпляр объекта, поэтому приведениена площадь не требуется.