奇怪了,抽象方法居然可以被实际调用?
函数原型: public abstract boolean drawImage(Image img, int x, int y,
int width, int height,
ImageObserver observer);
public static BufferedImage convert(Image image,int scale){
int width=image.getWidth(null),height=image.getHeight(null);
BufferedImage bufimg=new BufferedImage(width/scale,height/scale,
BufferedImage.TYPE_INT_RGB);
bufimg.getGraphics().drawImage(image,0,0,width,height,null); //为什么可以被调用。。。。。
return bufimg;
}
------解决方案--------------------bufimg.getGraphics()得到的是个实例
------解决方案--------------------在内部实现了
------解决方案--------------------肯定有实现的地方,就是你没有注意,找找吧
------解决方案--------------------这是多态。
在这个类的子类中实现了这个抽象方法。
------解决方案--------------------相信编译器吧,编译能通过就说明一定有实现过这个方法,只是你没找到而已
------解决方案--------------------bufimg.getGraphics() 返回的对象一定实现了drawImage方法
你再仔细看看。
------解决方案--------------------接口能用来声明!
接口也能用来创建吗?!!
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------System.out.println(bufimg.getGraphics().getClass());
看看实际的类型,其实没有必要理会其具体实现类型。
------解决方案--------------------顶一楼和十一楼,让我想起了很多东西!
------解决方案--------------------