继承内部类的问题

xingzhongyouyu 2011-07-12 05:09:07
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();
}

请朋友们,帮我解释一下,谢谢啦!
...全文
107 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
知之洲 2012-08-15
  • 打赏
  • 举报
回复
狂顶6楼
微风飘过 2011-07-12
  • 打赏
  • 举报
回复
Test(Outer outer)
{
outer.super();
}
调用的是两个构造函数,Outer()
{
System.out.println("Outer Class");
}
Inner()
{
System.out.println("Inner Class");
}
意思是执行outer.super();时有两个输出语句
xingzhongyouyu 2011-07-12
  • 打赏
  • 举报
回复
谢谢六楼,我明白了。
爱玩的老周 2011-07-12
  • 打赏
  • 举报
回复
我不知道我理解的对不对
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类没有父类。所以也就不会调用其父类的构造方法。
这句语法无错误,但是实际没有产生程序效果。
我也不知道我的回答对不对,如果错了,请各位大侠见谅。批评小弟笑纳。
你设置断点,跟跟程序吧。
iis81365341 2011-07-12
  • 打赏
  • 举报
回复
因为这个是内部类,你要访问内部类必须先有外部类,不然你访问不到内部类。
Inner in = new Outer().new Inner();
xingzhongyouyu 2011-07-12
  • 打赏
  • 举报
回复
6楼的朋友,你说的我有点明白了,能不能再详细点/
iis81365341 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xingzhongyouyu 的回复:]
引用 2 楼 iis81365341 的回复:
outer.super();的作用是调用父类中的无参构造函数,即Inner()。


Outer是外部类,Inner是内部类。为什么outer.super();是调用父类中的构造方法?
[/Quote]super()是调用父类中的构造方法。Test继承了Inner所以就调用Inner的构造方法。此处的outer只是把super()“导”向内部类。
xingzhongyouyu 2011-07-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 iis81365341 的回复:]
outer.super();的作用是调用父类中的无参构造函数,即Inner()。
[/Quote]

Outer是外部类,Inner是内部类。为什么outer.super();是调用父类中的构造方法?
爱玩的老周 2011-07-12
  • 打赏
  • 举报
回复
同意一楼的看法,调用Outer类中的Outer()方法。
Outer()
{
System.out.println("Outer Class");
}
xingzhongyouyu 2011-07-12
  • 打赏
  • 举报
回复
我知道它是outer的构造方法。主要是不明白,为什么要在
Test(Outer outer)
{
outer.super();
}
这里写这句。这是代表了什么?
iis81365341 2011-07-12
  • 打赏
  • 举报
回复
outer.super();的作用是调用父类中的无参构造函数,即Inner()。
xjmlj2010 2011-07-12
  • 打赏
  • 举报
回复
outer.super();
表示outer的构造函数

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧