Java 抽象类不能被实例化

Java 抽象类不能被实例化,java,abstract-class,Java,Abstract Class,无法实例化抽象类。然后在 public void paint(Graphics g){}什么是g?它不是一个物体吗?如果是,那么这与可以实例化的类有什么区别?抽象类不能直接实例化。但它们的全部要点是通过具体(即非抽象)类进行扩展,这些类可以实例化 因此,在您的示例中,g是某个GraphicsImpl子类(这是一个madeup名称,实际名称不是该名称)的一个实例,它扩展了Graphics并实现了它的所有抽象方法。g是扩展Graphics类的类中的一个对象。是,不能实例化抽象类。真正的g是图形的子类

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

抽象类不能直接实例化。但它们的全部要点是通过具体(即非抽象)类进行扩展,这些类可以实例化


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

g
是扩展
Graphics
类的类中的一个对象。

是,不能实例化抽象类。真正的g
图形的子类的一个实例


下面是如何使用它的示例:

不能实例化抽象类,可以实例化该抽象类的非抽象子类:

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

// ...

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

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

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

如果对某个类有疑问,请查看Javadoc,可以是在IDE中内联的,也可以是在web上(如果它是公共类的话)。有关所讨论的图形类(“g”变量),请参见此处:

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

对这个问题很有帮助……而且。