日期:2014-05-20  浏览次数:20702 次

应该算是java思想的小问题
本帖最后由 vampire_vivan 于 2013-10-13 19:42:03 编辑

import java.awt.Graphics;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class DrawCircle extends JFrame {
private final int OVAL_WIDTH = 80;// 圆形的宽
private final int OVAL_HEIGHT = 80;// 圆形的高
public DrawCircle() {
super();
initialize();// 调用初始化方法
}
// 初始化方法
private void initialize() {
this.setSize(300, 200);// 设置窗体大小
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 设置窗体关闭模式
setContentPane(new DrawPanel());// 设置窗体面板为绘图面板对象
this.setTitle("绘图实例2");// 设置窗体标题
}
public static void main(String[] args) {
new DrawCircle().setVisible(true);
}
// 创建绘图面板
class DrawPanel extends JPanel {
public void paint(Graphics g) {
super.paint(g);
g.drawOval(10, 10, OVAL_WIDTH, OVAL_HEIGHT); // 绘制1个圆形
}
}
}

我就是想问下,这段代码里面的两个super语句的作用是什么?删除以后,貌似运行结果没什么变化的!用到了什么思想吗?
super语句 java思想

------解决方案--------------------
第一个super是在DrawCircle的构造方法里,所以作用是调用父类的无参构造函数,第二个super在DrawPanel类的paint方法中,而且是super.paint(g)就是调用父类的paint方法,你说去除之后运行结果没什么变化,可能DrawCircle是父类的构造方法和DrawPanel的paint方法对于你的结果可能刚刚没有作用,比如第一个super是调用父类构造函数,里面是个空方法,这时候就跟你结果不会产生影响,使用super就是希望执行父类的方法