0

我有一个抽象类:

abstract class Shape {

    public String color;
    public Shape() {
    }
     public void setColor(String c) {
        color = c;
    }
    public String getColor() {
        return color;
    }

    public double area() {
        return 0;
    }
}

它提供了非抽象方法,然后我想像这样初始化它:

     Shape object = new Shape();

所以在初始化时,它仍然给我一个错误,但是为什么呢?如果我在类中提供一个抽象方法,那么类无法初始化也是可以理解的。在这种情况下,为什么它仍然给出错误?任何帮助,将不胜感激

4

2 回答 2

7

初始化它仍然给我一个错误,但为什么

因为类是抽象的。抽象类根本无法直接实例化,无论它是否具有抽象方法。从 JLS部分 8.1.1.1

如果尝试使用类实例创建表达式(第 15.9 节)创建抽象类的实例,则会出现编译时错误。

如果您没有任何抽象方法并且希望能够直接实例化该类,请将该类设为非抽象类。使没有抽象方法的类抽象的唯一原因强制使用具体的子类。

于 2013-04-04T05:45:45.537 回答
0

不,你永远不能实例化一个抽象类

于 2013-04-04T05:51:59.540 回答