Q. Why abstract method Graphics.drawString() can work without
implementation?
A:
Excellent question! The following is a statement copied from API doc
"The Graphics class is the abstract base class for all graphics contexts that allow an application to draw onto components that are realized on various devices , as well as onto off-screen images."
Pay attention to the word devices, which means platform even hardware dependent.
Then you find your jre/lib/rt.jar file on your machine, use some un-archive utility to see the names of some class files inside the jar file under sun/java2d/. Then you will know those abstract Graphics stuff is actually implemented in a devicedependent way.
The following code will give you exact answer on WinNT:
//===========================
import java.applet.*;
import java.awt.*;
class TestApplet extends Applet {
public void paint(Graphics g) {
g.drawString(g.getClass().toString(), 20, 30);
// output: class.ms.awt.GraphicsX
}
}
//===========================
implementation?
A:
Excellent question! The following is a statement copied from API doc
"The Graphics class is the abstract base class for all graphics contexts that allow an application to draw onto components that are realized on various devices , as well as onto off-screen images."
Pay attention to the word devices, which means platform even hardware dependent.
Then you find your jre/lib/rt.jar file on your machine, use some un-archive utility to see the names of some class files inside the jar file under sun/java2d/. Then you will know those abstract Graphics stuff is actually implemented in a devicedependent way.
The following code will give you exact answer on WinNT:
//===========================
import java.applet.*;
import java.awt.*;
class TestApplet extends Applet {
public void paint(Graphics g) {
g.drawString(g.getClass().toString(), 20, 30);
// output: class.ms.awt.GraphicsX
}
}
//===========================