public MyJFrame extends JFrame{
  public MyJFrame(String title){
    super(title);
     ....
   }   public static void main(String...args){
      new MyJFrame("Demo"); //question...    }
}
请问:new MyJFrame()产生了几个对象,,我怎么感觉产生了两个对象啊。。一个就是调用super()产生的JFrame,还有一个就是MyJFrame()产生的JFrame...如果把super(title);改成setTitle(title)也能创建一个JFrame

解决方案 »

  1.   

    new MyJFrame  首先创建父类,一层一层下来。你算算有几个?
      

  2.   

    感觉lz有点没对
    JFrame被继承后new还会生成对象么?
      

  3.   

    不一定创建了几个,创建子类对象的时候,父类会被先创建.
    public class Test {
    public static void main(String args[]){
    new Son();
    }
    }class Grand{
    public Grand(){
    System.out.println("Grand created");
    }
    }class Father extends Grand{
    public Father(){
    System.out.println("Father created");
    }
    }class Son extends Father{
    public Son(){
    System.out.println("Son created");
    }
    }结果:

    Grand created
    Father created
    Son created

    因为JFrame之上还有父类,所以如二楼所说数数几层就知道了
      

  4.   

    一个对象。你新new一个子类,它申请的空间有两部分组成,一部分结构与父类一样,所以需要调用super()初始化。另外一部分是子类特有的结构,所以需要调用自己的构造函数初始化。
    初始顺序:要先初始化与父类相同的结构,所以要在构造函数中首先调用super(),在这个之后才初始化子类。
      

  5.   

    super()就是父类的构造函数,忘写了,9楼说的对。