查文档得知:Graphic是抽象类。setColor/drawLine都是抽象方法。未重载应该是甚么也不干的。但在以下代码中最后两行却可以不加重载直接使用这些方法,为什么?
import java.awt.*;
import java.awt.event.*;
public class DrawLine
{
Frame f= new Frame("啦啦啦");
public static void main(String [] args)
{
new DrawLine().init();
}
public void init()
{
f.setSize(300,300);
f.setVisible(true);
f.addMouseListener(new MouseAdapter()
{
int orgX;
int orgY;
public void mousePressed(MouseEvent e)
{
orgX=e.getX();
orgY=e.getY();
}
public void mouseReleased(MouseEvent e)
{Grahpics g=f.getGraphics(); g.getGraphics().setColor(Color.red);
//设置绘图颜色为红色
g.getGraphics().drawLine(orgX,orgY,e.getX(),e.getY());
}
});
}
}
import java.awt.*;
import java.awt.event.*;
public class DrawLine
{
Frame f= new Frame("啦啦啦");
public static void main(String [] args)
{
new DrawLine().init();
}
public void init()
{
f.setSize(300,300);
f.setVisible(true);
f.addMouseListener(new MouseAdapter()
{
int orgX;
int orgY;
public void mousePressed(MouseEvent e)
{
orgX=e.getX();
orgY=e.getY();
}
public void mouseReleased(MouseEvent e)
{Grahpics g=f.getGraphics(); g.getGraphics().setColor(Color.red);
//设置绘图颜色为红色
g.getGraphics().drawLine(orgX,orgY,e.getX(),e.getY());
}
});
}
}
只不过用父类指代而已
这句话是返回的一个Grahpics的子类的实例给Grahpics的引用.
import java.awt.*;
import java.awt.event.*;
public class DrawLine
{
Frame f= new Frame("啦啦啦");
public static void main(String [] args)
{
new DrawLine().init();
}
public void init()
{
f.setSize(300,300);
f.setVisible(true);
f.addMouseListener(new MouseAdapter()
{
int orgX;
int orgY;
public void mousePressed(MouseEvent e)
{
orgX=e.getX();
orgY=e.getY();
}
public void mouseReleased(MouseEvent e)
{//Graphics g=f.getGraphics();f.getGraphics().setColor(Color.RED);
//设置绘图颜色为红色
f.getGraphics().drawLine(orgX,orgY,e.getX(),e.getY());
}
});
}
}