日期:2014-05-20  浏览次数:20631 次

think in java中的疑问!!简单问题!
书上说“内部类允许继承多个非接口类型”,可是如下程序为什么编译通不过呢?

public   class   Inner    
{
class   Inner1
{
public   void   p1()
{
System.out.println( "p1 ");
}
}
class   Inner2
{
public   void   p2()
{
System.out.println( "p2 ");
}
}
class   Inner3   extends   Inner1,Inner2
{
public   void   p3()
{
System.out.println( "p3 ");
}
}
public   static   void   main(String[]   args)  
{
Inner   in   =   new   Inner();
}
}

------解决方案--------------------
没看过TIJ,但是这应该是不可以的。
------解决方案--------------------
LZ 这样不对吧?书上哪有说 内部类允许继承多个非接口类,
好象是是说通过使用内部类可以实现继承自多个多接口类的效果,因为java中一个类只能继承自一个类但可以实现多个接口
------解决方案--------------------
java中类只能单一继承,所以class Inner3 extends Inner1,Inner2
写法是错的。
这里指的不是你这个意思,应该是内部类可以继承外部类的的一些属性和方法
------解决方案--------------------
class Inner3 extends Inner1,Inner2
不允许多继承把
------解决方案--------------------
内部类允许继承多个非接口类型
============================
我认为这句话讲的意思并不是单一的内部可以同时继承多个非接口类型,而是,每个内部类可以继承一个,而多个内部类,每个内部类继承一个,达到了同时继承多个非接口类型的效果。

记住,Java中没有多重继承。内部类也不例外。
请使用接口实现多重继承