抽象类无法实例化

时间:2014-04-27 08:04:10

标签: java abstract-class

无法实例化抽象类。然后进去 public void paint(Graphics g){ } g是什么?它不是一个对象吗?如果是,那么这与可以实例化的区别有什么区别?

6 个答案:

答案 0 :(得分:3)

抽象类无法直接实例化。但他们的全部意义是通过具体的(即非抽象的)类来扩展,这些类可以被实例化。

因此,在您的示例中,g是某个GraphicsImpl子类的实例(这是一个伪造的名称,实际名称不是那个),它扩展了Graphics并实现了它的所有抽象方法。

答案 1 :(得分:0)

g是扩展Graphics类的类的对象。

答案 2 :(得分:0)

是的,您无法实例化抽象类。真的 g Graphics子类的一个实例。

以下是如何使用它的示例:Sample example

答案 3 :(得分:0)

无法实例化抽象类,可以实例化该抽象类的非抽象子类:

public abstract class Graphics {
    // new Graphics() would not compile
}

// ...

public class Mygraphics extends Graphics {
    // new Mygraphics() would compile
}

答案 4 :(得分:0)

抽象类只是部分定义,需要进一步实现才能使它们起作用。给你一个关于图形的例子:有一种不同的方法如何绘制一个矩形(从0,0到0,从b到a,b到a,0到00的行)和一个圆(在r与某个中心点的距离)。这意味着,您无法定义它们在Graphics类中的绘制方式,而是在继承自它的类中。但是,它们都具有一些已定义的属性,这些属性来自抽象类,例如它可能是颜色。

答案 5 :(得分:0)

由abstract关键字表示的任何类都无法实例化,并且需要子类。你应该花一些时间阅读一些关于面向对象编程的理论和抽象含义(和一般的类层次结构,特别是类扩展)。

如果对某个类有疑问,请查看Javadoc,无论是在IDE中还是在Web上(如果它是公共类)。对于有问题的Graphics类(" g"变量),请查看:Graphics (Java Platform SE 7)

为了指出正确的方向,你可能想看看这个answer