抽象类不能被实例化。如:Person类是抽象类。
Person p=new Person("abc');//错误但是为什么可以这样写:
Person[] p=new Person[2];//OK

解决方案 »

  1.   

    Person[] p=new Person[2];//是初始化数据,并没有初始化p中的元素!p[0]=null;p[1]=null;
      

  2.   

    Person[] p=new Person[2];没有生成任何Person类对象
      

  3.   

    既然是数组,说明只是初始化该对象的引用,并没有创建该对象的实例引用和实例是两个概念就好比如下的示例也是两个概念
    String str = "111";
    String str = new String("111");
      

  4.   

    FDSAFDAS
    ================================================================
    灌水机器人
    ================================================================
      

  5.   

    xqk(夏乾坤) 的说法太模糊了, 举的那个例子也是风马牛不相及.Person[] p=new Person[2];这句确实创建了一个对象, 不过不是Person对象, 而一个数组对象. 这个数组是用来包含Person类的实例的, 但是还没有任何Person类的实例被创建, 所有的数组无素都是null.
      

  6.   

    为什么Person[]  p=new  Person[2];既然已经生成了Person对象,没有被实例化呢?
      

  7.   

    Person[] 是一个数组对象,不是Person对象。new Person[2] 是设置两个放置Person对象的内存空间里面并没有产生Person对象的实例。
      

  8.   

    Person[] p=new Person[2];没有调用Person类中的构造函数.
      

  9.   

    抽象类不能被实例化。如:Person类是抽象类。
    Person p=new Person("abc');//  错误,只有no-arg的构造函数才可以构造对象,实现引用但是为什么可以这样写:
    Person[] p=new Person[2];//  正确, 这个是初始化操作
    等同与
    Person[] p = new Person[]
    p.length = 2
      

  10.   

    好象都没讲到点子上啊??Person[] p=new Person[2]这样初始化以后有怎么用 p  呢??
      

  11.   

    搂主,我想你这个应该也不懂吧
    int[] i=new int[12];
    如果是局部变量,你看看每个i[]里有没有值
      

  12.   

    好象都没讲到点子上啊??Person[] p=new Person[2]这样初始化以后有怎么用 p  呢??
    这个P就是一个数组对象的引用,你说怎么用!!!
    你怎么用变量就怎么用它
      

  13.   

    建议楼主去看看SCJP方面的教材, 数组初始化是SCJP要考核的一个重点, 楼主不能理解这一点对以后深入学习很不利的.主要要区分的是"数组"的初始化和"数组元素"的初始化, 这是两个不同的方面, 数组初始化并不代表数组元素也初始化.
      

  14.   

    同意Dan1980(也该有一些作为了)的观点!
      

  15.   

    建议楼主花点时间搞清楚JAVA的内存管理机制。