A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭孟涛 高级黑马   /  2013-2-9 03:29  /  2567 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ts.add(new Student("lisi007",20));

这一句ts.add();中怎么还传入了一个 实例化类呢?new不是这样用的吗?

Person abc = new Person();


而且这个类还带着参数"lisi007",20。参数怎么被类接收到的?

评分

参与人数 1黑马币 +40 收起 理由
杨志 + 40 淡定

查看全部评分

8 个回复

倒序浏览
ts.add(new Student("lisi007",20));这部分new Student("lisi007",20)是一个匿名对象!
回复 使用道具 举报
ts.add(new Student("lisi007",20));

这一句ts.add();中怎么还传入了一个 实例化类呢?new不是这样用的吗?

Person abc = new Person();


而且这个类还带着参数"lisi007",20。参数怎么被类接收到的?

这是集合中使用泛型,集合中存的是一个Student类的对象,这个对象你可以在存的时候再创建存进去,也可以创建好了再存进去
回复 使用道具 举报

ts.add(new Student("lisi007",20));

这一句ts.add();中怎么还传入了一个 实例化类呢?new不是这样用的吗?

Person abc = new Person();


而且这个类还带着参数"lisi007",20。参数怎么被类接收到的?

Person abc = new Person(); 这个是最常用的创建对象的方式,左边的语句相当于是给要创建的对象起了个名字,右边是用的类的默认构造函数创建的类。传参数那种是用的自定义的带参的构造函数创建对象。
回复 使用道具 举报
这是往集合中添加了一个对象,该对象是通过调用有参数的构造方法进行实例化的。
回复 使用道具 举报
其实你可以把这句话分解一下:
Student s = new Student("lisi007",20);
ts.add(s);
也就是说,你是创建了一个Student对象,有两个属性(参数):"lisi007",20。那么,你是把这个数据添加到ts中去了,上面说是匿名对象,差不多是这个意思。
说的简单点,就是将一个Student的信息添加到ts中了。
回复 使用道具 举报
回复:“参数怎么被类接收到的?”→这是通过调用Student类的带有参数的构造函数生成的一个匿名对象
“ts.add()”方法的形参应该就是Student类型吧
回复 使用道具 举报
不要用你既定的思维去想代码,没有规定过不能的就可以,只要你想得出符合规则的你想怎么想都可以
new Student("lisi007",20)是一个匿名对象;
add()里面添加的就是对象
回复 使用道具 举报
ts.add(new Student("lisi007",20));

new Student(); 这是匿名对象的写法,
new Student("lisi007",20);这是使用构造函数声明了一个匿名对象.

关于匿名对象有以下使用方式:
1. 当对对象的方法只调用一次时,可以用匿名对象来完成,这样写比较简化,如果一个对象进行多个成员调用,必须给这个对象起个名字。
2. 可以将匿名对象作为实际参数进行传递.正如上述中:ts.add(new Student("lisi007",20));这种形势,直接add了一个对象.

关于构造函数:
三个特点:1. 函数名与类名相同 2. 不用返回值类型 3. 不可以写return语句
作用:主要是用来初始化对象.如上述问题:new Student("lisi007",20);
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马