class MyCanvas extends Canvas
   {
Random r=new Random();
        public void paint(Graphics g)
{
   if(shape == "fillOval")
   {
     g.setColor(Color.red);
     g.fillOval(r.nextInt(500),r.nextInt(250),50,50);
   }
  if(shape == "drawRect")
   {
     g.setColor(Color.CYAN);
     g.drawRect(r.nextInt(500),r.nextInt(250),50,50);
   }
}
上面paint方法中传入Graphics对象为什么没有显示创建?
Graphics类中的setColor方法是抽象方法为什么也可以直接调用呢?
请大师指点,谢谢!

解决方案 »

  1.   

    你在调用方法要传一个Graphics对象参数吧,如果对象不初始化,就调用它的方法肯定会报空指针异常
      

  2.   

    那是因为JAVA 的API 中的 Canvas类里面将这个Graphics对象作为类成员变量了,并在你构造你的画布对象时,即MyCanvas对象,就已经初始化了Graphics对象,要知道,子类对象构造时,要先构造父类对象。
      

  3.   

    哦,原来是这样,但是Graphics对象不是抽象类吗?抽象类不是不能创建对象的吗?
    这个又是怎么回事呢?   还是感谢大师指点。