在很多代码中,有这样的一句:Image image = Toolkit.getDefaultToolkit().getImage(resource file);我一直不是很理解。Image是java.awt包中的一个抽象类,抽象类是不能实例化的。而Toolkit.getDefaultToolkit()返回的是一个Toolkit类型,
而Toolkit也是抽象类型的,它调用getImage()方法又返回的是Image类型,那么最后不是等号右边返回了一个Image抽象类型的对象了?然后把地址传给image引用型变量。因为这段代码可以通过编译,所以肯定没有问题,但是我对以上代码不理解。有谁可以详细介绍一下?谢谢!

解决方案 »

  1.   


    跟这个 有 一些 相同的 地方 , List list = new ArrayList();
      

  2.   

    Toolkit.getDefaultToolkit()肯定返回的是一个继承了Toolkit类的对象。
      

  3.   

    Toolkit.getDefaultToolkit()返回的真正对象是:sun.awt.windows.WToolkit类的对象而getImage()返回的真正对象是:sun.awt.image.ToolkitImage类的对象
      

  4.   

    这句可以分解为下面两句:Toolkit defaultToolkit = Toolkit.getDefaultToolkit();
    Image image = defaultToolkit.getImage("path"); 下面是这两句对应的大概的内存图
      

  5.   

    哈哈。太强了。
    List list = new ArrayList();
    跟这个一样。虽然List是一个接口。它的意思是说,list是一个实现了List接口的实例。
    到你的代码里,意思就是image是一个集成了Image抽象类的实例。