zoukankan      html  css  js  c++  java
  • [javase学习笔记]-6.5 类类型參数与匿名对象

    这一节我们来说说类类型參数和匿名对象.

    我们继续用之前的小汽车类吧

    class Car
    {
    	int num;//这是轮胎数属性
    	String color;//这是颜色属性
    	String brand;//这是品牌性
    	
    	void start()//启动行为
    	{
    		System.out.println("小汽车已启动");
    	}
    	void run()//这就是执行行为
    	{
    		System.out.println(num+"..."+color+"..."+brand);
    	}
    }
    对于我们的Car类,假设我们要创建多个同样的小汽车我们应该怎么做呢?

    对于我们刚開始学习的人,我们肯定会用这种操作:

    class CarDemo
    {
    	public static void main(String[] args)
    	{
    		//定义第一辆车
    		Car myCar1 = new Car();
    		myCar1.num = 4;
    		myCar1.color = "red";
    		myCar1.brand = "BWM";
    		//定义第二辆车
    		Car myCar2 = new Car();
    		myCar1.num = 4;
    		myCar1.color = "red";
    		myCar1.brand = "BWM";
    		//定义第三辆甚至很多其它时,仅仅能这样不断的写代码
    	}
    }

    我们能够说说,上面的代码确实非常烂了,我们做了非常多同样的操作,假设我们要定义非常多同样的车时,代码的复用性确实太差了.

    那么我们该怎么做呢,非常显然,我们必需要提高代码的复用性,也就是说我们能够把同样功能的代码封装起来以反复使用,那么就可这样做:

    class CarDemo
    {
    	public static void main(String[] args)
    	{
    		//定义第一辆车
    		Car myCar1 = new Car();
    		assemble(myCar1);
    		System.out.println("myCar1是一辆"+myCar1.color+"颜色的"+myCar1.brand+"品牌的小汽车,它有"+myCar1.num+"个轮子");
    		//定义第二辆车
    		Car myCar2 = new Car();
    		assemble(myCar2);
    		System.out.println("myCar2是一辆"+myCar2.color+"颜色的"+myCar2.brand+"品牌的小汽车,它有"+myCar2.num+"个轮子");
    		//定义第三辆能够直接复用assemble(Car car)这个组装功能就可以
    	}
    	//我们能够封闭一个汽车组装的功能,然后调用这个功能就能够
    	public static void assemble(Car car)//类类型的參数一定要指向对象,要么就是null
    	{
    		car.num = 4;
    		car.color = "red";
    		car.brand = "BWM";
    	}
    }
    从上面的代码我们非常easy就实现了同样车辆的组装,提高了代码的复用性,同一时候我们注意到,封装的功能的參数是一个类类型的形式參数,它指向的是一个Car类型的对象.

    我们来看一下上面代码的结果:


    我们从结果上看到确实实现了我们想要实现的同样汽车.

    我们再简单来看一下比較特殊的情况,就是匿名对象.

    匿名对象顾名思义就是没有名字的对象

    new Car();//匿名对象,事实上就是定义对象的简写格式

    那么匿名对象一般怎么用呢?

    我们先看一样例,比方我们要创建一辆车,并执行run方法,那么我们会这样做:

    Car c = new Car();//这个是有名对象
    c.run();
    对于上面这样的情况,我们能够简写为例如以下一句代码:

    new Car().run;
    那么我们就看到匿名对象的第一种使用方法:

    当对象对方法仅进行一次调用的时候,就能够简化成匿名对象.

    我们看一段代码:

    class CarDemo
    {
    	public static void main(String[] args)
    	{
    		new Car().num = 5;
    		new Car().color = "green";
    		new Car().run();
    	}
    }

    我们看一下结果:

    对于这三句语句,每运行一名,在堆内存中都会创建新的空间,而不是仅仅创建一个对象.当运行以下的一句语句时,前面的语句已经被释放了,所以上面的前两句代码没有意义.可是最后一句会被运行,由于该对象对方法仅仅进行了一次调用.

    匿名对象的另外一种使用方法:

    匿名对象能够作为实际參数进行传递.

    比方前面我们的方法assemble(Car car),我们能够这样使用:

    assemble(new Car());

  • 相关阅读:
    Lesson 3 Nehe
    Lesson 2 Nehe
    Lesson 1 Nehe
    Lesson 1 Nehe
    JavaScript 字符串与数组转换函数[不用split与join]
    华中科大校长:教授被称为“叫兽”是教育的悲哀
    /etc/profile、~/.bash_profile等几个文件的执行过程
    cygwin下遇到system没有执行的问题
    发短信 汉字编码 utf-8 UCS-2BE
    UTF-8与UNICODE的关系及代码转换
  • 原文地址:https://www.cnblogs.com/llguanli/p/7273618.html
Copyright © 2011-2022 走看看