日期:2014-05-20  浏览次数:20745 次

关于抽象类不能创建实例的一个疑惑?
请大家帮忙看一个问题:
不是说一个抽象类不能实例化一个对象吗?但下面这段代码好象有冲突啊。
//   Display   Fonts
/*
<applet   code= "ShowFonts "   width=550   height=60>
</applet>
*/
import   java.applet.*;
import   java.awt.*;

public   class   ShowFonts   extends   Applet   {
    public   void   paint(Graphics   g)   {
        String   msg   =   " ";
        String   FontList[];

        GraphicsEnvironment   ge   =  
            GraphicsEnvironment.getLocalGraphicsEnvironment();
        FontList   =   ge.getAvailableFontFamilyNames();
        for(int   i   =   0;   i   <   FontList.length;   i++)
            msg   +=   FontList[i]   +   "   ";

        g.drawString(msg,   4,   16);
    }
}

在API里查到如下信息:
public   abstract   class   GraphicsEnvironment   extends   Object
static   GraphicsEnvironment   getLocalGraphicsEnvironment()  
abstract     String[]   getAvailableFontFamilyNames()  
这不是与下面的语句冲突吗?还是下面的语句有什么其他的意思?
GraphicsEnvironment   ge   =  
            GraphicsEnvironment.getLocalGraphicsEnvironment();
        FontList   =   ge.getAvailableFontFamilyNames();

谢谢解答啊!


------解决方案--------------------
GraphicsEnvironment.getLocalGraphicsEnvironment();这里得到的是它的一个实例,是一个实现了它的子类的实例,java是容许用子类来为父类创建实例对象的。
但是你不能用new来初始化啊,所以说“一个抽象类不能实例化一个对象”是说不能用new来实例化。