给出以下代码:
import javax.swing.*;
import java.awt.*;
public class NewClass extends JPanel {
public void paintComponent(Graphics g) {
g.drawLine(0, 0, 90, 90);
}
public static void main(String[] args) {
JFrame jf = new JFrame();
jf.add(new NewClass());
jf.setSize(500, 500);
jf.setVisible(true);
}
}
如果方法drawLine
是抽象的,为什么它会画一条线?正如我设法理解的那样,抽象方法没有定义?
提前谢谢!
答案 0 :(得分:3)
paintComponent()
获取Graphics
的非抽象子类,它实现drawLine()
。它必须得到一个非抽象的子类,因为抽象类不能被实例化。
答案 1 :(得分:2)
public void paintComponent(Graphics g)
此处Graphics具有抽象方法drawLine,该方法没有实现主体,但其子类具有drawLine的具体实现。调用paintComponent时,将传递适当的非抽象子类的对象