抽象类初始化

时间:2013-04-04 05:44:12

标签: java abstract-class abstract-methods

我有一个抽象类:

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();

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

2 个答案:

答案 0 :(得分:6)

  

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

因为这个类是抽象的。一个抽象类只是不能直接实例化,无论它是否有抽象方法。来自JLS section 8.1.1.1

  

如果尝试使用类实例创建表达式(第15.9节)创建抽象类的实例,那么这是一个编译时错误。

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

答案 1 :(得分:0)

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