面向对象(4):匿名对象

面向对象(4):匿名对象

1、匿名对象:简单来说,就是没有名字的对象
   用内存的形式解释:
    	之前,一直都是在堆内存中new对象,然后将地址值赋给栈里面的变量,这个变量也就是对象的名字;
    	而匿名对象,就说明没有栈中的变量引用。
2、匿名对象的使用场景
(1)当调用方法的时候,只能调用一次;调用多次的时候,不能使用匿名对象
 匿名存在的意义:
            某些情况下,我们就想使用一次某个对象中的功能,后续也不会使用它了,这时候,就可以使用
	    匿名对象,使用完之后,就被JVM认为是一个垃圾空间(栈里面没有引用指向它),等待被回收
(2)匿名对象可以在调用方法的时候被当作参数进行传递(前提是引用数据类型作为方法中参数的时候)

匿名对象使用场景(1):当调用方法的时候,只能调用一次

//Anonymous:匿名

//创建一个电脑类敲代码的方法
//先创建一个电脑类
class Computer {
    //再创建敲代码的方法
    public void coding(){
        System.out.println("敲代码");
    }
}
=========================================================
//创建一个测试类
public class Anonymous {
    public static void main(String[] args) {
    //创建电脑对象,用来调用其中的方法
    Computer cc = new Computer();
    //调用敲代码方法
        cc.coding();

        //创建电脑匿名对象
        //new出来的是对象,匿名就是不给它名字,即new Computer();
        //没有名字,所以不能以名字来调用方法了,那就直接调用
        new Computer().coding();

        //使用第一个对象再调一次方法
        cc.coding();
        //使用匿名对象不可再调一次方法
        //再调一次,相当于又创建了一个匿名对象
        //new Computer().coding();
    }
}

执行结果为:
            敲代码
            敲代码
            敲代码

            Process finished with exit code 0

匿名对象使用场景(2):匿名对象可以在调用方法的时候被当作参数进行传递

1、在面向对象(3)中提到过参数问题,当引用数据类型作为方法中参数的时候,调用该方法的时候,要在该方法前面创建一个引用数
   据类型对应的对象;当使用匿名对象的时候,就不需要创建引用数据类型对应的对象了,匿名对象可以当作参数进行传递
//创建一个电脑类敲代码的方法
//先创建一个电脑类
class Computer01 {
    //再创建敲代码的方法
    public void coding(){
        System.out.println("敲代码");
    }
}

//创建第二个类
class Demo01{
    public void fun(Computer01 c){
        c.coding();
    }
}

//创建一个测试类
public class Anonymous01 {
    public static void main(String[] args) {
        //创建Demo01对象,用来调用其中的方法fun
        Demo01 cc = new Demo01();
        /*
        不使用匿名对象的时候:
                   调用fun方法
                   因为参数是引用数据类型,所以在调用之前
                   要创建引用数据类型对应的对象
                   Computer01 x = new Computer01();
                       cc.fun(x);
         */

        //调用fun方法,匿名对象当作参数进行传递
        cc.fun(new Computer01());

    }
}

执行结果如下:
            敲代码

            Process finished with exit code 0

posted @ 2021-12-04 23:14  阿伟宝座  阅读(385)  评论(0)    收藏  举报