面向对象(2)
1.1 匿名对象
匿名对象:没有名字的实体,也就是该实体没有对应的变量名引用。
匿名对象的用途
对象对方法进行一次调用的时候,可以使用匿名对象对代码进行简化。为什么只对方法,而不调用属性呢?因为匿名对象调用属性没意义。
如果对象要多成员进行多次调用,必须给对象起个名字。不能在使用匿名 对象。匿名对象可以实际参数进行传递。
匿名对象的使用
1:当只使用一次时可以使用匿名对象。执行完毕到;后该对象就变成了垃圾。new Car().run();
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();
}
}
总结:
1. 匿名对象设置的属性永远无法获取? 没有引用变量指向那个对象。
2. 任何两个匿名对象使用==比较,永远返回false。
3. 匿名对象主要应用于实参。