内部类继承时,父类构造函数的调用

孤雲獨去閑 2012-09-15 01:33:02

public class Outer{
class Inner extends Outer{}
class Inner1 extends Inner{}
}


public class Outer{
class Inner {}
class Inner1 extends Inner{}
}

上面两段代码中,第一段代码编译出错,第二段能够正常编译!为什么只是Inner没有继承Outer就会有这样的差异?这两个程序到底有什么区别?很迷惑,求解答!
...全文
235 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
江湖啊江湖 2012-09-15
  • 打赏
  • 举报
回复
public class Outer{
class Inner extends Outer{}
class Inner1 extends Inner{}
}
因为java不实现多继承
====================================================
public interface Interface1 {
interface Interface2 extends Interface1{}
interface Interface3 extends Interface2{}
}
====================================================
rockets311 2012-09-15
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

第一段代码出现错误不是由于多重继承引起的,而是因为内部类的构造器中对超类构造器的调用不正确,第一段代码如果改成下面的样子就能编译通过:
Java code

public class Outer{
class Inner extends Outer{}
class Inner1 extends Inner{
public Inner1()
{
Outer……
[/Quote]
比较有趣的问题,搜出来一个比较古老的帖子。
http://topic.csdn.net/t/20030830/13/2205562.html
建议看一下。
杀手 2012-09-15
  • 打赏
  • 举报
回复
我从没想过用内部类继承其外部类,等待大牛出现
孤雲獨去閑 2012-09-15
  • 打赏
  • 举报
回复
第一段代码出现错误不是由于多重继承引起的,而是因为内部类的构造器中对超类构造器的调用不正确,第一段代码如果改成下面的样子就能编译通过:

public class Outer{
class Inner extends Outer{}
class Inner1 extends Inner{
public Inner1()
{
Outer.this.super();
}
}
}

在这里,使用上面的方式“Outer.this.super();”调用超类的构造器才能编译通过!但是如果Inner不继承自Outer类,Inner1中的构造器就无须这样的方式调用超类的构造器!但这两者之间到底是什么原因呢?为何Inner继承自Outer以后,Inner1中就必须显示的传递外部类的实例来调用超类的构造器;若Inner不是继承自Outer,就无须显示的传递外部类实例来调用构造器..求大神解释啊!
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
public class Outer{
class Inner extends Outer{}
class Inner1 extends Inner{}
}
因为java不实现多继承
====================================================
public interface Interface1 {
interface Inte……
[/Quote]
正解
corn8888 2012-09-15
  • 打赏
  • 举报
回复
感觉内部类不是很好用
结贴是美德 2012-09-15
  • 打赏
  • 举报
回复
我cc 还真没注意过这个事情,我马克一下,等待大侠出现

62,634

社区成员

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

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