黑马程序员技术交流社区

标题: new实例化用法的疑问 [打印本页]

作者: 郭孟涛    时间: 2013-2-9 03:29
标题: new实例化用法的疑问
ts.add(new Student("lisi007",20));

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

Person abc = new Person();


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


作者: 逍林游    时间: 2013-2-9 09:43
ts.add(new Student("lisi007",20));这部分new Student("lisi007",20)是一个匿名对象!
作者: 铿锵科技    时间: 2013-2-9 10:17
ts.add(new Student("lisi007",20));

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

Person abc = new Person();


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

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

作者: 范天成    时间: 2013-2-9 23:29

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

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

Person abc = new Person();


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

Person abc = new Person(); 这个是最常用的创建对象的方式,左边的语句相当于是给要创建的对象起了个名字,右边是用的类的默认构造函数创建的类。传参数那种是用的自定义的带参的构造函数创建对象。
作者: 冯佩    时间: 2013-2-11 12:45
这是往集合中添加了一个对象,该对象是通过调用有参数的构造方法进行实例化的。
作者: 黄玉昆    时间: 2013-2-11 17:44
其实你可以把这句话分解一下:
Student s = new Student("lisi007",20);
ts.add(s);
也就是说,你是创建了一个Student对象,有两个属性(参数):"lisi007",20。那么,你是把这个数据添加到ts中去了,上面说是匿名对象,差不多是这个意思。
说的简单点,就是将一个Student的信息添加到ts中了。
作者: 赵熠东(赵东东)    时间: 2013-2-16 20:11
回复:“参数怎么被类接收到的?”→这是通过调用Student类的带有参数的构造函数生成的一个匿名对象
“ts.add()”方法的形参应该就是Student类型吧
作者: 黄基焜    时间: 2013-2-16 22:31
不要用你既定的思维去想代码,没有规定过不能的就可以,只要你想得出符合规则的你想怎么想都可以
new Student("lisi007",20)是一个匿名对象;
add()里面添加的就是对象
作者: 成吉思汗    时间: 2013-2-21 22:50
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);





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2