Instrument[] a = new Instrument[5];   只是new了一个数组, 又没有生成一个Instrument的类,当然可以了.
你这个数组里可以放wind, piano等等实例, 如果这样不行的话你怎么建一个数组来放所有的Instrument的子类呢.

解决方案 »

  1.   

    这样理解
    Instrument[] a = new Instrument[5]; 
    a是一个装乐器的盒子,你又往里面放了5个装乐器的盒子。这五个盒子装什么事以后的事情。
    Instrument a = new Instrument(); 
    a是一个装乐器的盒子,但是你要往里面放一个“乐器”。这是抽象的东西,你能做出一个乐器来吗?你只能做出一种乐器来。
    Instrumenta = new 小提琴();
    a是一个装乐器的盒子,往里面放一个小提琴,当然可以了。
      

  2.   

    Instrument[] a = new Instrument[5]; 
    a是一个装乐器盒子的盒子,你往里面放了5个乐器盒子。这五个盒子装什么事以后的事情。
    第一个改成这样更好一点
      

  3.   

    你可以这样理解:1、数组是容器 2、实例是对象
    数组(容器)里面可以放实例(对象),是放什么类型的对象呢?
    这就是这个数组(容器)声明的类型了。
    所以你说的为什么可以声明Instrument类型数组,那是因为它只是说明里面应该放的对象
    的类型。
      

  4.   

    Instrument a = new Instrument(); 
    a是一个装乐器的盒子,但是你要往里面放一个“乐器”。这是抽象的东西,你能做出一个乐器来吗?你只能做出一种乐器来。
    如何说?