构造器不会被继承
你所说的自动调用super是当用户没有明确写构造器而由编译器自动生成时

解决方案 »

  1.   

    to drinkant(喝酒的蚂蚁) :
    “构造器不会被继承”--没错,我并没有说其可以继承。这个我知道。
    “你所说的自动调用super是当用户没有明确写构造器而由编译器自动生成时”
    --对,你也没说错,不过并没有回答我的问题。
      既然调用super(),自然不设计其他带参数的构造函数。就算子类的构造函数有内容,super()从我所做的试验来看都是可有可无的。
      

  2.   

    super()是不有可无,但其可以简化程序
      

  3.   

    也同上,可以简化程序,当某个参数不同时,将该参数修改,然后用super()重写一次就ok了。
      

  4.   

    简化程序?是用在别的地方吧,就
        public RuntimeException() {
    super();
        }
    有什么简化吗?
      

  5.   

    super();用来调用父类的构造方法.
    比如你继承了JTextField类,你必须在你的构造方法中掉用super();
      

  6.   

    to:zh_baiyu(SkyBay) 
      不是必须的。试验代码如下:import javax.swing.*;
    class test{
        static public class testSuper extends JTextField{
         public String sa;
        }
        public static void main(String[] args){
           testSuper ts = new testSuper();
           ts.sa = "hello";
        }
    }
    编译通过
      

  7.   

    试验代码2:
    import javax.swing.*;
    class test{
        static public class testSuper extends JTextField{
         public testSuper(){
         System.out.println("可以不调用super()");
         }
         public String sa;
        }
        public static void main(String[] args){
           testSuper ts = new testSuper();
           ts.sa = "hello";
        }
    }
    输出结果:
      可以不调用super()
      

  8.   

    当你的超类有很多子类的时候,
    那根据设计模式的观点,
    公共的代码就应该放在超类中。
    这时候就能体现出super()的优势,
    公共的部分,只需要在超类中实现一次。
      

  9.   

    如果子类没有定义构造函数,就自动用super()。
      

  10.   

    调用 super() ,可以完成一些必要的初始功能,如果你需要的话。
      

  11.   

    如果没人有异议,我就这样总结了:
      1.这个super()和其他子类调用父类的方法一样,如果下面还有代码,就是简化了代码,直接调用父类的功能;
      2.如果像我上面写的那样,只有这一句调用,没有子类的其他增强代码,则仅仅是为了提醒‘有这个方法’,便于以后扩展。
      

  12.   

    如果父类的构造函数是private,那就不可以被任何类所访问,只有public或是protected才可以被子类所访问。
      

  13.   

    运用super():
    public class MessageDemo extends JFrame
    {
       ....
        public MessageDemo()
       {
           this.setTitle("Message !");
        }
        //比较
        public MessageDemo()
        {
            super("Message !");
             //这句代码等于new JFrame("Message !");
         }
    }
      
      

  14.   

    总之,super关键字可以去调用父类的方法。
      

  15.   

    我来说首先确定一件事情: 子类一定会调用父类的构造方法。然后再说子类如何调用父类的构造方法。1. 如果子类的构造方法里没有显示的调用父类的构造方法。则子类的构造方法会自动调用父类的默认构造。2. 如果子类的构造方法里明确的调用了父类的构造方法。则就按照这个调用。不再调用默认的构造了。基于这个事实。  楼主的问题就很好回答。他的代码,子类的构造方法里调用了父类的构造方法: super(); 但是他是显式的调用了父类的默认构造方法。所以这种情况下写super();和不写super();是一样的。 但是假如父类里面还有别的构造方法比如 super(String a); 那在子类里写 
    super("myName");
    和不写效果就不一样了。不写的话就调用super();了
      

  16.   

    回复人: baopingle() ( ) 信誉:100  2003-11-06 13:59:00  得分:0 
     
     
      如果父类的构造函数是private,那就不可以被任何类所访问,只有public或是protected才可以被子类所访问。  
     
    如果一个类的默认构造函数是private,那么此类将不能被继承
      

  17.   

    你是在jbuilder 里吧
    可以下结论,super()有时有用,有时没有用,但看情况