书上说“内部类允许继承多个非接口类型”,可是如下程序为什么编译通不过呢?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();
}
}

解决方案 »

  1.   

    没看过TIJ,但是这应该是不可以的。
      

  2.   

    LZ 这样不对吧?书上哪有说 内部类允许继承多个非接口类,
    好象是是说通过使用内部类可以实现继承自多个多接口类的效果,因为java中一个类只能继承自一个类但可以实现多个接口
      

  3.   

    java中类只能单一继承,所以class Inner3 extends Inner1,Inner2
    写法是错的。
    这里指的不是你这个意思,应该是内部类可以继承外部类的的一些属性和方法
      

  4.   

    class Inner3 extends Inner1,Inner2
     不允许多继承把
      

  5.   

    内部类允许继承多个非接口类型
    ============================
    我认为这句话讲的意思并不是单一的内部可以同时继承多个非接口类型,而是,每个内部类可以继承一个,而多个内部类,每个内部类继承一个,达到了同时继承多个非接口类型的效果。记住,Java中没有多重继承。内部类也不例外。
    请使用接口实现多重继承
      

  6.   

    你理解错了吧,这样肯定不行的 extends Inner1,Inner2
      

  7.   

    如果看不懂的话。可以先看java无难事。 网上有FLASH教程的。那个比较好懂点 
    http://www.enet.com.cn/eschool/zhuanti/java/
      

  8.   

    我看的是“java编程思想第三版”p224页上说的原话是这样的“如果没有内部类提供的、可以继承多个具体的或抽象类的能力,一些设计与编程问题就难以解决。从这个角度看,内部类使得多重继承的方案变得完整。接口解决了部分问题,而内部类有效的实现了“多重继承”。也就是说,内部类允许继承多个非接口类型(译注:类或者抽象类)”不过,我觉得ericbu(~~~~~~~~~~~~~~~) 说的挺有道理的,谢谢!还望高手指点迷津……