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()是否一定要,有什么用?

解决方案 »

  1.   

    super()
    如果没写 就会隐式的调用 super()
    所以 写了和没有写是一样的。
      

  2.   

    一定要调用super的,因为要完成父类Frame的一些初始化工作,
    之所以你的结果一样,是因为你没用到父类Frame的一些特性,
    如果更复杂的程序用到了这写特性,没有调用super,就会出错
      

  3.   

    你这里用不着super()因为是在同一个父类里面。
      

  4.   

    因为你的构造方法是默认的构造方法,所以假如你继承A类,但在构造方法里没有显示的调用A类的构造方法,也就是说super(),那么会给你隐式的调用A类的构造方法!但是前提条件是基类有无参构造方法!
      

  5.   

    恩,调用子类的构造器前要先往上捣,
    捣啊捣,捣啊捣
    捣到顶层父类开始调用其构造器,
    所以这个捣的过程就是用你写的super()来完成的,
    你不写呢,自然也要捣,
    就给你隐式调用了,但楼上的那个前提条件不可少
      

  6.   

    因为你的构造方法是默认的构造方法,所以假如你继承A类,但在构造方法里没有显示的调用A类的构造方法,也就是说super(),那么会给你隐式的调用A类的构造方法! 但是前提条件是基类有无参构造方法!
      

  7.   

    不用也行,在子类的构造方法中,如果没有使用关键字super调用父类的某个构造方法,那么默认有super();语句,来调用父类的不带参数的构造方法
      

  8.   

    这里不用像父类的构造方法传递参数,所以使用super(),在这种情况下是可以省略的,它会自动去调用父类的无参数构造方法,有参数的情况就不一样的,或许别人是追求代码风格的一致,大可不必理会它
      

  9.   

    你这里可以不用super()
    你这里的super()实际就是Frame.super()。
    而你在下面并没有对这个方法有重写。
    这种情况下,会默认调用。
      

  10.   

    你的这个程序可以不写super方法,可在继承父类的方法时,它还是很好用的 啊
      

  11.   

    如果你在代码里没有显式地调用super(),java虚拟机都会自动地调用super();
    所以在Frame类中必须得有一个无参的构造器Frame(){}
      

  12.   

    super()是调用父类的构造方法啊..默认jvm自动帮我调用super()无参的构造方法
      

  13.   

    对于class MainFrame是Frame类的子类,在执行子类对象的方法时,要么继承父类的方法,要么重新定义个自己的方法函数,对于super()是调用了父类的无参构造方法,所以在这里是必须的,当然虽然结果一样,但是如果没有写super(),系统还是默认的的先执行父类的无参构造方法,再执行其它的对象方法。
      

  14.   

    super(); 在没有参数的情况下,程序会自己调用。写不写都行的 。
    如果有参数的话拿就得写了             
      

  15.   

    super()可以不要,也可以要...因为super()不要..JVM默认调用super()构造方法
      

  16.   


    super是父类的构造函数。。  可以通过super.*调用父类的方法
      

  17.   

    如果,父类的构造方法是缺省的,在子类的构造方法里,你可以super(),如果不调用,就会隐式的调用,但前提是子类必须有一个缺省的构造方法.
    如果想调用父类不是缺省的构造方法,就必须用super显示的调用了.