匿名对象
匿名对象:没有名字的实体,也就是该实体没有对应的变量名引用。
匿名对象的用途
1,当对象对方法进行一次调用的时候,可以使用匿名对象对代码进行简化。
为什么只对方法,而不调用属性呢?因为匿名对象调用属性没意义。
如果对象要多成员进行多次调用,必须给对象起个名字。不能在使用匿名 对象。
2,匿名对象可以实际参数进行传递。
2:匿名对象的简单演示
1:new Car().run();
3:内存结构图
1:new Car().num=5;
2:new Car().clor="blue";
两个new 是两个不同的对象,在堆内存中有不同的空间,相互不相互干扰。
4:匿名对象的使用
1:当只使用一次时可以使用匿名对象。执行完毕到;后该对象就变成了垃圾。
new Car().run();
2:执行方法时,可以将匿名对象作为实际参数,传递进去。
5:修黑车
1:需求
将小汽车改装成3个轮子的黑车。
1:汽车类。
2:汽车修理厂
/* 匿名对象 匿名信 修黑车 汽车类 黑车厂类 把汽车的改成黑色3轮车。 */ class Car { String name = "smart"; String color = "red"; int num = 4; void run() { System.out.println(name + ":" + color + ":" + num + ":跑起来了。。。。"); } } class BlackCarFactory { String name; String addr; Car repairCar(Car c) { c.num = 3; c.color = "黑色"; System.out.println("改装成功啦。。。"); } } class Demo1 { public static void main(String[] args) { BlackCarFactory bcf = new BlackCarFactory(); bcf.name = "幸福修理厂"; bcf.addr = "天河区棠东东路御富科贸园a栋206"; // 非匿名对象 Car c = new Car(); c.run(); // 改装 bcf.repairCar(c); // 取车 c.run(); // 匿名对象一,只使用一次: // 如下创建了2个对象 /* * new Car().run(); * * new Car().run(); */ // 匿名对象二,作为实际参数传递 Car c2 = bcf.repairCar(new Car()); c2.run(); System.out.println(); } }
练习:
- 请问输出的name属性是什么? new Perosn() == new Person()相等吗?
总结:
1. 匿名对象设置的属性永远无法获取? 没有引用变量指向那个对象。
2. 任何两个匿名对象使用==比较,永远返回false。
3. 匿名对象主要应用于实参。