我有一个抽象类:
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();
所以在初始化时,它仍然给我一个错误,但为什么呢?如果我在类中提供一个抽象方法,那么可以理解该类无法初始化。在这种情况下,为什么还会出错?任何帮助将不胜感激
答案 0 :(得分:6)
初始化它仍然给我一个错误,但为什么
因为这个类是抽象的。一个抽象类只是不能直接实例化,无论它是否有抽象方法。来自JLS section 8.1.1.1:
如果尝试使用类实例创建表达式(第15.9节)创建抽象类的实例,那么这是一个编译时错误。
如果您没有任何抽象方法,并且希望能够直接实例化该类,请使该类非抽象。创建没有抽象方法abstract 的类的唯一原因是以强制使用具体的子类。
答案 1 :(得分:0)
不,你永远不能实例化一个抽象类