2013-04-04 89 views
0

我有一个abstarct类:抽象类初始化

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

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

+0

http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html – 2013-04-04 05:45:47

+0

你不能实例化一个抽象类。 – NilsH 2013-04-04 05:45:51

回答

6

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

因为类是抽象的。抽象类不能直接实例化,不管它是否有抽象方法。来自JLS section 8.1.1.1

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

如果您还没有任何抽象方法,并且希望能够直接实例化该类,请将该类设置为非抽象类。制作不带抽象方法的课程的唯一理由摘要以强制使用具体的子类。

+0

thakyou这么多的帮助很大。 – User42590 2013-04-04 05:55:52

0

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