是什么导致我的抽象类中的错误?

时间:2018-10-25 07:19:03

标签: java abstract

public abstract Shape {
    public abstract void draw();
    public static void main(String[] args) { 
        ArrayList shapes = new ArrayList(); 
        shapes.add(new Shape()); // Line ONE
        shapes.get(0).draw(); // Line TWO
    } 

    public class Square extends Shape { 
        public void draw () {
            System.out.println(“The square is being drawn.”);
        }
}

有人可以帮助解释第一行中的错误吗?它可以修复吗?

即使上面的行是固定的,行TWO仍然会产生错误。如何修复第二行?

3 个答案:

答案 0 :(得分:0)

您无法实例化一个抽象类,这就是您使用new Shape()

所做的事情

抽象类是构建的基础,您可以对其进行扩展并创建具体的类,您可以对其进行实例化。

答案 1 :(得分:0)

三个错误:

1)public abstract Shape {应该是public abstract class Shape {

2)shapes.add(new Square()); // Line ONE,因为Shape是抽象的,无法实例化。

3)((Square)shapes.get(0)).draw(); // Line TWO;,因为shapes.get(0)返回一个Object实例,因此需要强制转换为Square。

答案 2 :(得分:0)

实际上有四个错误:

1)public abstract Shape {应该是public abstract class Shape {

2)shapes.add(new Shape()); // Line ONE,因为Shape是抽象的,无法实例化。

3)shapes.add(new Square()); // Line ONE在您将其标记为静态之前,不能在non-static范围内使用static方法。

4)((Square)shapes.get(0)).draw(); // Line TWO;,因为shapes.get(0)返回一个Object实例,因此需要强制转换为Square。