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仍然会产生错误。如何修复第二行?
答案 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。