public class MainFrame extends Frame {
public MainFrame() {
super();
initialize();
} private void initialize() {
this.setLayout(null);
this.setTitle("主界面");
this.setBackground(new Color(255, 204, 204));
this.setBounds(new Rectangle(200, 200, 400, 300));
}
}
我看别人的程序有调用super(),不用super()程序结果也一样啊,请问这里的super()是否一定要,有什么用?
public MainFrame() {
super();
initialize();
} private void initialize() {
this.setLayout(null);
this.setTitle("主界面");
this.setBackground(new Color(255, 204, 204));
this.setBounds(new Rectangle(200, 200, 400, 300));
}
}
我看别人的程序有调用super(),不用super()程序结果也一样啊,请问这里的super()是否一定要,有什么用?
如果没写 就会隐式的调用 super()
所以 写了和没有写是一样的。
之所以你的结果一样,是因为你没用到父类Frame的一些特性,
如果更复杂的程序用到了这写特性,没有调用super,就会出错
捣啊捣,捣啊捣
捣到顶层父类开始调用其构造器,
所以这个捣的过程就是用你写的super()来完成的,
你不写呢,自然也要捣,
就给你隐式调用了,但楼上的那个前提条件不可少
你这里的super()实际就是Frame.super()。
而你在下面并没有对这个方法有重写。
这种情况下,会默认调用。
所以在Frame类中必须得有一个无参的构造器Frame(){}
如果有参数的话拿就得写了
super是父类的构造函数。。 可以通过super.*调用父类的方法
如果想调用父类不是缺省的构造方法,就必须用super显示的调用了.