[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 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来 ...
随机推荐
- 《机器学习实战》基于朴素贝叶斯分类算法构建文本分类器的Python实现
============================================================================================ <机器学 ...
- eclipse-12.04无图标,无法固定到侧边栏
今天下载了adt-bundle,但是eclipse打开以后,侧边栏显示的是一个问好,而且没办法固定到侧边栏,导致每次打开eclipse都要进入到相应目录,很麻烦.我们可以通过如下方法设置eclipse ...
- Android应用开发-广播和服务
广播 广播的概念 现实:电台通过发送广播发布消息,买个收音机,就能收听 Android:系统在产生某个事件时发送广播,应用程序使用广播接收者接收这个广播,就知道系统产生了什么事件. Android系统 ...
- Writing Images to the Excel Sheet using PHPExcel--转载
原文地址:http://www.walkswithme.net/writing-images-to-the-excel-sheet-using-phpexcel Writing images to t ...
- MyCat:对MySQL数据库进行分库分表
本篇前提: mycat配置正确,且能正常启动. 1.schema.xml <table>标签: dataNode -- 分片节点指定(取值:dataNode中的name属性值) rule ...
- BingMap频繁Add Pushpin和Delete Pushpin会导致内存泄露
近期在做性能測试的时候发现BingMap内存泄露(memory leak)的问题,查找了一些国外的帖子,发现也有类似的问题,可是没有好的解决的方法. https://social.msdn.micro ...
- Java基础学习总结(31)——Java思维导图
- 6.4 Android硬件访问服务编写HAL代码
JNI向上提供本地函数,向下加载HAL文件,并调用HAL的函数: HAL负责访问驱动程序执行硬件操作 JNI和HAL都是用c语言或者C++语言编写的,JNI加载HAL的实质就是使用dlopen加载动态 ...
- 全面详细介绍一个P2P网贷领域的ERP系统的主要功能
一般的P2P系统,至少包括PC网站的前端和后端.前端系统的功能,可以参考"P2P系统哪家强,功能其实都一样" http://blog.csdn.net/fansunion/ ...
- Linux环境编程之共享内存区(一):共享内存区简单介绍
共享内存区是可用IPC形式中最快的.一旦内存区映射到共享它的进程的地址空间,进程间数据的传递就不再涉及内核.然而往该共享内存区存放信息或从中取走信息的进程间通常须要某种形式的同步.不再涉及内核是指:进 ...