public class Outer{ class Inner extends Outer{} class Inner1 extends Inner{} } public class Outer{ class Inner {} class Inner1 extends Inner{} }上面两段代码中,第一段代码编译出错,第二段能够正常编译!为什么只是Inner没有继承Outer就会有这样的差异?这两个程序到底有什么区别?很迷惑,求解答!
public class Outer{ class Inner extends Outer{} class Inner1 extends Inner{} } 因为java不实现多继承 ==================================================== public interface Interface1 { interface Interface2 extends Interface1{} interface Interface3 extends Interface2{} } ====================================================
第一段代码出现错误不是由于多重继承引起的,而是因为内部类的构造器中对超类构造器的调用不正确,第一段代码如果改成下面的样子就能编译通过: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,就无须显示的传递外部类实例来调用构造器..求大神解释啊!
class Inner extends Outer{}
class Inner1 extends Inner{}
}
因为java不实现多继承
====================================================
public interface Interface1 {
interface Interface2 extends Interface1{}
interface Interface3 extends Interface2{}
}
====================================================
class Inner extends Outer{}
class Inner1 extends Inner{
public Inner1()
{
Outer.this.super();
}
}
}在这里,使用上面的方式“Outer.this.super();”调用超类的构造器才能编译通过!但是如果Inner不继承自Outer类,Inner1中的构造器就无须这样的方式调用超类的构造器!但这两者之间到底是什么原因呢?为何Inner继承自Outer以后,Inner1中就必须显示的传递外部类的实例来调用超类的构造器;若Inner不是继承自Outer,就无须显示的传递外部类实例来调用构造器..求大神解释啊!
http://topic.csdn.net/t/20030830/13/2205562.html
建议看一下。