抽象类的错误:class,interface或enum expected

时间:2016-02-27 08:52:50

标签: java oop inheritance abstract

我的抽象类遇到了这个非常奇怪的问题(但在stackoverflow中很常见的问题)。我正在尝试实现这种层次结构:

抽象形状,类Circle,类Rectangle,类Square

Circle和Rectangle继承自Abstract Shape,square继承自Rectangle。我还使用ArrayList和一些方法创建了一个ShapeContainer类。我还添加了一个TestShapeContainer类来测试这些功能。下面是相关的代码(因为有很多代码我会尝试将相关内容放在一起):

摘要形状:

public abstract Shape
{
  public double getArea();

  public String toString();
}

错误消息:

Error at Shape.java Error: class, interface, or enum expected (lines: 1, 3, 5, 6) at abstract Shape

CLASS SHAPECONTAINER:

import java.util.ArrayList;

public class ShapeContainer
{
  //  PROPERTIES  //
  private ArrayList<Shape> container;

  // CONSTRUCTORS //
  public ShapeContainer()
  {
    container = new ArrayList<>();
  }

  //    METHODS   //
  public void add(Shape s)
  {
    container.add(s);
  }

  public double getArea(int index)
  {
    return container.get(index).getArea();
  }

  public int getSize()
  {
    return container.size();
  }
}

我在Circle,Rectangle和Square中有相应的getArea和toString方法。

我缺少什么?任何帮助将非常感激。

1 个答案:

答案 0 :(得分:3)

您忘记了class关键字:

public abstract class Shape {
  public double getArea();

  public String toString();
}

您需要将您的方法定义为抽象,如下所示:

public abstract class Shape {
  public abstract double getArea();

  public abstract String toString();
}