zoukankan      html  css  js  c++  java
  • 29.Java匿名对象

    匿名对象

    匿名对象:没有名字的实体,也就是该实体没有对应的变量名引用。

    匿名对象的用途 

    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();
        }
    }

    练习:

    1. 请问输出的name属性是什么? new Perosn() == new Person()相等吗?

    总结:

           1. 匿名对象设置的属性永远无法获取?  没有引用变量指向那个对象。

           2. 任何两个匿名对象使用==比较,永远返回false。

           3.  匿名对象主要应用于实参。

    author@nohert
  • 相关阅读:
    老男孩Day17作业:后台管理平台编辑表格
    老男孩Day16作业:登录、注册、后台管理页面(动态)
    老男孩Day15作业:商城列表页面(静态)
    老男孩Day14作业:堡垒机
    老男孩Day13作业:ORM学员管理系统
    老男孩Day12作业:RabbitMQ-RPC版主机管理程序
    老男孩Day10作业:主机管理程序
    老男孩Day9作业:高级FTP
    面试遇见钓鱼公司怎么办?
    宝能技术岗面试
  • 原文地址:https://www.cnblogs.com/gzgBlog/p/13580004.html
Copyright © 2011-2022 走看看