关于抽象类不能创建实例的一个疑惑?
请大家帮忙看一个问题:
不是说一个抽象类不能实例化一个对象吗?但下面这段代码好象有冲突啊。
// 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来实例化。