[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());
[javase学习笔记]-6.5 类类型參数与匿名对象的更多相关文章
- [javase学习笔记]-6.6 基本数据类型參数与引用数据类型參数的传递过程
这一节基本数据类型參数和引用数据类型參数的传递过程. 数据类型參数和引用參数我们在前面章节中都已涉及到了,那么我们来看看以下的两段代码: //基本数据类型參数传递 class Demo { publi ...
- 【web开发学习笔记】Structs2 Result学习笔记(三)带參数的结果集
Result学习笔记(三)带參数的结果集 第一部分:代码 //前端 <head> <meta http-equiv="Content-Type" content= ...
- [javase学习笔记]-6.2 类与对象的关系
这一节我们来看一下类与对象之间的关系. 我们学习java语言,目的就是用java语言对现实生活中的事物进行描写叙述.那么我们如何来描写叙述呢.这就引出了类,我们在实际实现时,是通过类的形式来体现的. ...
- LDA主题模型学习笔记3.5:变分參数推导
如今来推导一下得到变分參数更新式的过程.这一部分是在论文的附录中,为避免陷入过多细节而影响总体理解.能够在刚開始学习LDA的时候先不关注求解细节.首先要把L写成关于γ,ϕ\gamma,\phi函数.依 ...
- springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定
springmvc学习笔记(13)-springmvc注解开发之集合类型參数绑定 标签: springmvc springmvc学习笔记13-springmvc注解开发之集合类型參数绑定 数组绑定 需 ...
- springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定
springmvc学习笔记(12)-springmvc注解开发之包装类型參数绑定 标签: springmvc springmvc学习笔记12-springmvc注解开发之包装类型參数绑定 需求 实现方 ...
- JavaSE学习笔记(14)---File类和IO流(字节流和字符流)
JavaSE学习笔记(14)---File类和IO流(字节流和字符流) File类 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建.查找和删除等操作. 构造方 ...
- JavaSE学习笔记(8)---常用类
JavaSE学习笔记(8)---常用类 1.Object类 java.lang.Object类是Java语言中的根类,即所有类的父类.它中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类 ...
- JavaSE学习笔记(5)---内部类和String类
JavaSE学习笔记(5)---内部类和String类 一.内部类基础 转自菜鸟教程 在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来 ...
随机推荐
- Android开机自动运行APP——BroadcastReceiver
前言: 有些时候,应用需要在开机时就自动运行,例如某个自动从网上更新内容的后台service.怎样实现开机自动运行的应用?在撰写本文时,联想到高焕堂先生以“Don't call me, I'll ca ...
- 含有打印、统计DataGridView(1)
using System;using System.Collections.Generic;using System.Text;using System.Drawing.Printing;using ...
- subline Text3 安装及汉化
因为自己的subline 有问题 所以决心重新改一下了. 三步: http://www.sublimetext.com/3 官网下载subline3 https://www.imjeff. ...
- hdu5389
题意:给你n个人每一个人手里有一个id,然后给你两个数a和b.让你把n个人分为两组.条件是 一组人手里的id和等于a 另一组人的id和等于b,这里的和是指加起来之后对9取余,假设sum等于0 则sum ...
- Javascript和jquery事件--事件对象event
1. 事件对象event 对于event,js的解释是Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态.而jq的解释是事件处理(事件对象.目标元素 ...
- Hypervisor scheduler
Techniques for configuring a hypervisor scheduler to make use of cache topology of processors and ph ...
- VMware Ubuntu安装具体过程
不是每个程序猿都必须玩过linux,仅仅是博主认为如今的非常多server都是linux系统的,而自己属于那种前端也搞.后台也搞,对框架搭建也感兴趣,可是非常多生产上的框架和工具都是安装在server ...
- Git 基本使用方法
Git有一个优点,在本地的每个项目都是一个完整的仓库,除了须要从网络拉取和推送到网络之外,其它全部的操作都能够在本地完毕. 本文简单地介绍怎样在本地使用Git来对文件进行管理,下一篇文章再来说一下分支 ...
- 通过量产解决U盘写保护,无法格式化问题
1.首先下载ChipGenius.地址:http://pan.baidu.com/s/1eQvf1zc 2.解压,双击ChipGenius_v4_00_0027_pre2. 3.能够检測到U盘的主控厂 ...
- 缓存(cache)的理解
缓存的特点: 读取速度很快,容量相比硬盘较小: 缓存在实现时,本质上仍然是一块内存区域: cache 机制的一个核心关注点还在于,究竟什么样的数据应该放在缓存中,显然不是所有,那就应当是部分,就应该是 ...