抽象类不能被实例化。但是为什么可以这样写?

myepoch 2005-06-28 04:30:49
抽象类不能被实例化。如:Person类是抽象类。
Person p=new Person("abc');//错误

但是为什么可以这样写:
Person[] p=new Person[2];//OK


...全文
369 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
plovej 2005-06-29
  • 打赏
  • 举报
回复
好象都没讲到点子上啊??

Person[] p=new Person[2]

这样初始化以后有怎么用 p 呢??
huwen_83 2005-06-29
  • 打赏
  • 举报
回复
建议楼主花点时间搞清楚JAVA的内存管理机制。
wddodo 2005-06-29
  • 打赏
  • 举报
回复
同意Dan1980(也该有一些作为了)的观点!
Dan1980 2005-06-29
  • 打赏
  • 举报
回复
建议楼主去看看SCJP方面的教材, 数组初始化是SCJP要考核的一个重点, 楼主不能理解这一点对以后深入学习很不利的.

主要要区分的是"数组"的初始化和"数组元素"的初始化, 这是两个不同的方面, 数组初始化并不代表数组元素也初始化.
star_str 2005-06-29
  • 打赏
  • 举报
回复
好象都没讲到点子上啊??

Person[] p=new Person[2]

这样初始化以后有怎么用 p 呢??


这个P就是一个数组对象的引用,你说怎么用!!!
你怎么用变量就怎么用它
yangbc 2005-06-29
  • 打赏
  • 举报
回复
搂主,我想你这个应该也不懂吧
int[] i=new int[12];
如果是局部变量,你看看每个i[]里有没有值
不徻写代码 2005-06-28
  • 打赏
  • 举报
回复
别钻牛角尖
star_str 2005-06-28
  • 打赏
  • 举报
回复
抽象类不能被实例化。如:Person类是抽象类。
Person p=new Person("abc');// 错误,只有no-arg的构造函数才可以构造对象,实现引用

但是为什么可以这样写:
Person[] p=new Person[2];// 正确, 这个是初始化操作
等同与
Person[] p = new Person[]
p.length = 2
mxbprogramming 2005-06-28
  • 打赏
  • 举报
回复

wjr1982et 2005-06-28
  • 打赏
  • 举报
回复
Person[] p=new Person[2];没有调用Person类中的构造函数.
farmer0512 2005-06-28
  • 打赏
  • 举报
回复
Person[] 是一个数组对象,不是Person对象。new Person[2] 是设置两个放置Person对象的内存空间里面并没有产生Person对象的实例。
myepoch 2005-06-28
  • 打赏
  • 举报
回复
为什么Person[] p=new Person[2];既然已经生成了Person对象,没有被实例化呢?
Dan1980 2005-06-28
  • 打赏
  • 举报
回复
xqk(夏乾坤) 的说法太模糊了, 举的那个例子也是风马牛不相及.

Person[] p=new Person[2];

这句确实创建了一个对象, 不过不是Person对象, 而一个数组对象. 这个数组是用来包含Person类的实例的, 但是还没有任何Person类的实例被创建, 所有的数组无素都是null.
ccghghgj 2005-06-28
  • 打赏
  • 举报
回复
FDSAFDAS


================================================================
灌水机器人
================================================================
xqk 2005-06-28
  • 打赏
  • 举报
回复
既然是数组,说明只是初始化该对象的引用,并没有创建该对象的实例

引用和实例是两个概念

就好比如下的示例也是两个概念
String str = "111";
String str = new String("111");
HitXU 2005-06-28
  • 打赏
  • 举报
回复
Person[] p=new Person[2];

没有生成任何Person类对象
yanloveyan2004 2005-06-28
  • 打赏
  • 举报
回复
Person[] p=new Person[2];//是初始化数据,并没有初始化p中的元素!p[0]=null;p[1]=null;
dext 2005-06-28
  • 打赏
  • 举报
回复
对呀!这只是申明了一个数组!他的长度是2
并没有调用所谓的构造函数。
和C++不太一样

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧