在AWT中的Graphic类中的画图方法 如:drawRect是抽象的方法 也就是说是没有实现的 但是是可以用
g.drawRect()的方式来调用 drawEect()方法是的实现是在哪个类中实现的?
另外 Graphic类中有抽象方法 那这个类应该是抽象类 但是可以这样写 Graphic g 来实例对象g 这不是矛盾吗? 多谢高手指点

解决方案 »

  1.   

    编译时类型和运行时类型不同,如果你想知道实现类是什么
    System.out.println(g.getClass());
      

  2.   

    1. g.drawRect()的方式来调用 drawEect()方法是的实现是在哪个类中实现的?
       是Graphics的具体子类中实现的,如你在JPanel中画图,JPanel的绘图区域是一个具体类的实例2. Graphic类中有抽象方法 那这个类应该是抽象类 但是可以这样写 Graphic g 来实例对象g 这不是矛盾吗?
       Graphic g 这样的形式只是声明了一个引用,而没有实例化对象
       只有Object a = new Object()这样的形式才进行了实例化.