首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

为什么抽象方法没有实现, 为什么可以调用的,而且能够实现其应有的功能?解决思路

2012-01-03 
为什么抽象方法没有实现, 为什么可以调用的,而且能够实现其应有的功能?看了这段代码后,我有个地方不明白,i

为什么抽象方法没有实现, 为什么可以调用的,而且能够实现其应有的功能?
看了这段代码后,我有个地方不明白,
import   java.awt.*;
import   java.awt.event.*;
import   javax.swing.*;

class   DrawImage   extends   JFrame   {
    Image   img=getToolkit().getImage( "background.gif ");
    private   static   JPanel   p1   =   new     JPanel();
    private   static   JButton   b2   =   new   JButton( "fff ");
    public   void   paint(Graphics   g)
    {
    g.drawImage(img,0,0,400,400,this);
    }
   
//   public   void   paintComponents(Graphics   g)
//{
////super.paintComponents(g);
//g.drawImage(img,0,0,this);
//}

    public   static   void   main(String   args[])   {
        System.out.println( "Starting   DrawImage... ");
        DrawImage   mainFrame   =   new   DrawImage();
        //mainFrame.paintComponents
        mainFrame.getContentPane().add(p1);
       
        mainFrame.setSize(400,   400);
        p1.add(b2);
        mainFrame.setTitle( "DrawImage ");
        //mainFrame.pack();
        mainFrame.setVisible(true);
    }
}


这个方法中的g.drawImage(img,0,0,400,400,this);调用的是Graphics中的抽象方法,
请问抽象方法没有实现,为什么可以调用的,而且能够实现drawImage方法应有的功能?

[解决办法]
Graphics 类是所有图形上下文的抽象基类,允许应用程序可以在组件(已经在各种设备上实现),以及闭屏图像上,进行绘制。
[解决办法]
没有实现当然不能调用了。他调用的其实是子类的实现。
[解决办法]
用 System.out.println(g.getClass().getName()) 就知道这个 Graphics 对象的实际名称了。
[解决办法]
他根据系统相关性实现了,在运行库中

热点排行