class Outer
{
Outer()
{
System.out.println("Outer Class");
}
class Inner
{
Inner()
{
System.out.println("Inner Class");
}
}
}class Test extends Outer.Inner
{
Test(Outer outer)
{
outer.super();
}
public static void main(String[] args)
{
Outer o=new Outer();
Test t=new Test(o);
}
}在以上代码中,我有个地方不明白。第一个就是,以下代码中的outer.super()是什么意思,这么写代表了什么?
Test(Outer outer)
{
outer.super();
}请朋友们,帮我解释一下,谢谢啦!

解决方案 »

  1.   

    outer.super();
    表示outer的构造函数
      

  2.   

    outer.super();的作用是调用父类中的无参构造函数,即Inner()。
      

  3.   

    我知道它是outer的构造方法。主要是不明白,为什么要在
    Test(Outer outer)
    {
    outer.super();
    }
    这里写这句。这是代表了什么?
      

  4.   

    同意一楼的看法,调用Outer类中的Outer()方法。
    Outer()
    {
       System.out.println("Outer Class");
    }
      

  5.   


    Outer是外部类,Inner是内部类。为什么outer.super();是调用父类中的构造方法?
      

  6.   

    super()是调用父类中的构造方法。Test继承了Inner所以就调用Inner的构造方法。此处的outer只是把super()“导”向内部类。
      

  7.   

    因为这个是内部类,你要访问内部类必须先有外部类,不然你访问不到内部类。
    Inner in = new Outer().new Inner();
      

  8.   

    我不知道我理解的对不对
    Outer o=new Outer();   //这一句是执行了。
    这句话会调用以下两个构造函数
    Outer()
    {
       System.out.println("Outer Class");
    }
    Inner()
    {
       System.out.println("Inner Class");
    }
    但是第二句
    Test t=new Test(o);   //没有执行
    他的意思是调用以下的构造函数:
    Test(Outer outer)
    {
       outer.super();   //也就是调用Outer对象的父类的构造函数
    }
    他的作用是调用Outer对象的父类的构造函数。
    可是这里Outer类没有父类。所以也就不会调用其父类的构造方法。
    这句语法无错误,但是实际没有产生程序效果。
    我也不知道我的回答对不对,如果错了,请各位大侠见谅。批评小弟笑纳。
    你设置断点,跟跟程序吧。
      

  9.   

    Test(Outer outer)
    {
    outer.super();
    }
      调用的是两个构造函数,Outer()
    {
      System.out.println("Outer Class");
    }
    Inner()
    {
      System.out.println("Inner Class");
    }
    意思是执行outer.super();时有两个输出语句