[javase学习笔记]-6.5 类类型参数与匿名对象

javaSE从入门到精通的二十万字总结(一) 目录前言1. 面向对象1.1 final关键字1.2 抽象类2. 数组2.1 一维数组的声明和使用3. 常用类3.1 String 前言 在看这篇文章之前先预习ava基础 可查看我之前写的文章java零基础从入门到精通(全) 1. 面向对象 1.1 final关键字 final 修饰的类不能被继承 final 修饰的方法不能被覆盖 final 修饰的变量不能被修改 构造方法不能被 final 修饰 代码示列:修饰的类、方法、变量 变量在没有赋值的时候可以定义可以声明 但如果输出变量就必须给予定义以及赋值 阅读详情

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

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

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";
	}
}
从上面的代码我们很容易就实现了相同车辆的组装,提高了代码的复用性,同时我们注意到,封装的功能的参数是一个类类型的形式参数,它指向的是一个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());

5.JavaSE第五天_面向对象基础&类&对象&匿名对象 一、数组的内容图解 1、内存模型 在通过JVM中的java命令启动JVM之后,首先JVM会在内存中划分5片区域。 栈:它的主要功能是负责方法运行。方法进入栈内存(方法压栈),方法执行完出栈(方法弹栈) 堆:只要是通过new关键字创建出来的都在堆中,并且堆中的空间必须有初始化默认值。 方法区:主要存储class字节码、各种常量池 本地方法区:只要运行JVM与系统之间交互等相关的方法 寄存器:高速缓存,提供给CPU使用。 2、数组内存图 class Demo { public static void 阅读详情

相关推荐

内存|内存的概念、内存的作用、内存的物理结构及内存使用

内存是硬件,是用于存放数据的硬件。程序执行前需要先放到内存中才能被CPU处理。内存是与CPU沟通的桥梁,计算机中所有程序的运行都要依靠内存,内存对计算机的影响非常大。本文简单介绍了内存的概念、作用、物理结构以及使用,内存远不止如此,后续文章会逐步深入讲解。

qq_59938293的博客 2万+

java匿名类对象的使用

java匿名类对象的的使用 要点 1.创建的类对象是匿名的 1. 当我们只需要一次调用类的对象的时候,我们就可以考虑使用匿名类的创建方式创建匿名类对象。 2. 创建的匿名类对象只能够调用一次! 2.匿名类只能够调用一次的原因 1.创建的时候只在jvm的堆空间新建了对象,并进行初始化,但栈空间没有一个变量名指向匿名对象。 2. jvm垃圾回收机制在发现堆空间的对象,没有一个引用指向他,就给回收内存...

码农回顾 2553

Unity游戏Mono注入实战:从反编译到功能扩展

本文详细介绍了Unity游戏Mono注入的完整实战流程,从使用dnSpy反编译游戏核心逻辑,到编写自定义C#功能DLL,再到利用SharpMonoInjector进行动态注入。文章深入讲解了如何通过Harmony库拦截修改游戏方法,并介绍了使用MelonLoader框架和UnityExplorer进行高级模组开发与调试,最终通过一个游戏对象透视(ESP)案例演示了功能扩展的实现。

weixin_29018335的博客 459

[javase学习笔记]-6.5 类类型參数与匿名对象

这一节我们来说说类类型參数和匿名对象. 我们继续用之前的小汽车类吧 class Car { int num;//这是轮胎数属性 String color;//这是颜色属性 String brand;//这是品牌性 void start()//启动行为 { System.out.println("小汽车已启动"); } void run()//这就是执行行为 { ...

weixin_33810006的博客 127

CUDA编译踩坑实录:如何正确设置-gencode参数适配你的GPU算力

本文深入解析CUDA编译中-gencode参数的核心原理与实战配置,帮助开发者解决常见的'Unsupported gpu architecture'错误。通过厘清虚拟架构与真实架构的区别,并提供多版本兼容的CMake配置方案,确保编译出的代码能精准适配不同GPU算力,兼顾性能与广泛兼容性。

weixin_28829903的博客 339

基于IEEE39节点系统的风力发电机组并网改造与稳定性研究

本文研究了基于IEEE39节点系统的风力发电机组并网改造与稳定性问题。首先将系统工作频率从60Hz转换为50Hz,并对同步发电机、变压器、线路和负荷参数进行相应调整。随后将30、32、34、37号节点的同步发电机替换为不同容量的永磁同步发电机(PMSG)和双馈感应发电机(DFIG),详细建立了两种风电机组的数学模型和控制策略。通过Simulink仿真验证,改造后的系统能够稳定运行并满足并网要求。研究成果为大规模风电并网系统仿真提供了参考,对提高电力系统可再生能源消纳能力具有重要意义。

huanghm88的专栏 110

JavaSE 面向对象之匿名对象和关键字

1.方法的形式参数是类名的时候如何调用 A:Java中参数传递问题 形式参数 基本类型:形式参数的改变不影响实际参数 引用类型:形式参数的改变直接影响实际参数 B:方法的参数是类名 如果你看到了一个方法的形式参数是一个类类型(引用类型),这里其实需要的是该类的对象。 2.匿名对象的概述和应用 A:什么是匿名对象 就是没有名字的对象 B:匿名对象应用场景 a:调用方法,仅仅只调用一...

ITzhazhassc的博客 189

Android14 Qcom 从Framework到Driver带你连接WIFI(一)

前面已经讲完了WIFI打开的流程,那么通过UI这时候是可以选择需要连接的网络进行连接。从这里开始我们看连接的流程。

IAYLBL的博客 696

JavaSE 进阶 - 第18章 面向对象(Object和匿名内部类)

JavaSE 进阶 - 第18章 面向对象(Object和匿名内部类)一、Object1、JDK类库的根类:Object2、Object类当中有哪些常用的方法?3、toString()方法4、equals()方法5、finalize()方法(了解)6、hashCode方法二、匿名内部类传送门 一、Object 1、JDK类库的根类:Object    这个老祖宗类中的方法我们需要先研究一下,因为这些方法都是所有子类通用的。    任何一个类默认继承Object。就算没有直接继承,最终也会间接继承。 2、Ob

佬涛的博客 618

图像算法中的 Blob 分析

在计算机视觉中,Blob 可以理解为在图像中具有相似性质(如颜色、亮度等)的像素群体。Blob 通常用作基本单元,在图像分析和处理任务中能够提取出有意义的特征。

m0_44975814的博客 2483

人工智能训练师(三级)操作技能考核·自测卷

为您定制了一份。这份试卷严格拆分了“业务分析”、“智能训练”、“智能系统设计”、“培训与指导”四大模块,所有填空题均来源于上一轮整理的。您可以先用它进行“第二步(抛开答案自己填)”,填完后对照末尾的答案速查进行“第一步(补全并运行)”的校验,最后标记错题进行“第三步(针对性重复练习)”。

suny8088的博客 105

JavaSE之面向对象知识点总结

JavaSE之面向对象知识点总结

weixin_44528963的博客 1611

PyQt5数据库开发3 6 QSqlQuery完整实操案例【图文详解】

PyQt5数据库开发3 6.1 QSqlQuery实操案例【多图详解】,本文有点长,主要每一个步骤都有对应的图文教程!!!

qq_53317005的博客 2963

JAVASE(6)匿名对象、构造方法、static、private

Keyword: 匿名对象 封装 private和public get()和set() this关键字 构造方法 static关键字 成员变量和静态变量的区别 代码块 匿名对象 定义:没有名字的对象。 格式:new对象(); 具有以下的特征: 1.每当使用关键词new是就会堆内存开辟一个空间 2.匿名对象可以作为参数进行传递 3.应用的场景:仅仅只调用一次对象的时候 封装 封装是指隐藏对象的属...

keep hungry keep foolish 205

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

JavaSE学习笔记 Day14

内部类、常用工具类 - Object类

CHiN_951的博客 1036

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

【JavaSE系列】Java类与对象,万物皆对象

本篇文章带大家认识Java类与对象,我相信大家都听说过面向对象编程,Java正是一种面向对象编程的语言,与C语言不同,C语言是一门面向过程的编程语言。对面向对象与面向过程的区别,我们可以这样理解,面向对象,对象指的是一个事物,是名词性的,面向过程,过程指的是做事情,是动词性的,比如你要把一物品放进冰箱,面向过程是打开冰箱门->放入冰箱->关闭冰箱;面向对象是物品->冰箱。类与对象本身就是非常抽象的概念,需要多认识多实践,下面就开始正文,带你了解Java中的类与对象。

未见花闻的博客 2991

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

JAVASE 面向对象

JAVASE 面向对象 文章目录JAVASE 面向对象1.面向对象1.1面向对象的特征2.类和对象2.1类2.2对象3.局部变量 & 成员变量的区别4.值传递和引用传递5.匿名对象5.1匿名对象特点6.垃圾对象6.1成为垃圾对象的情况 1.面向对象 概述:把不同功能,分别进行封装,并将类似的功能封装到一起;在需要的时候调用相对应的类 OOA:面向对象分析:分析解决问题的过程需要多少个...

WzXxZw_Bolgs 596

JavaSE第6篇:面向对象

面向对象简介

qq_29445811的博客 802

JavaSE-权限修饰符,内部类,匿名内部类,packge,import,传递参数

JavaSE-权限修饰符,内部类,匿名内部类 ,packge,传参 内部类 (1)定义:将一个类定义到另一个类的内部,我们称之为内部类。 在类A中定义一个类B,那么我们把A叫做外部类,把B叫做内部类。 (2)分类: a.成员内部类:将内部类定义到外部类的成员位置(类中方法外) b.局部内部类:将内部类定义到外部类的局部位置(类中方法中) (3)举例 class A{ class B { /...

weixin_45137957的博客 266

javaSE基础学习笔记 day04 权限修饰 匿名对象 可变个数形参

javaSE基础学习笔记 day04成员变量与局部变量的初始化JVM内存结构匿名对象可变形参个数的方法(JDK5.0新特性)四种权限修饰符的作用范围javaBeanthis的特殊用法 成员变量与局部变量的初始化 成员变量:根据其类型,均有默认的初始化值。(与数组的默认初始化值相同) 局部变量:没有默认的初始化值,使用前必须显示的赋值。 JVM内存结构 虚拟机栈:即平时提到的栈,局部变量存放在其中。 堆:将 new 出来的结构(比如数组,对象),加载到堆空间中。 对象的属性(非 static )的,也加载在堆

yu1590的博客 136

JAVASE学习笔记(十五)(行为参数化 & 策略者模式 &匿名内部类 & Lambda表达式)

JAVASE学习笔记(十五)问题行为参数化标准建模总结问题匿名内部类匿名内部类简述如何选择匿名内部类或实现类解决需求(==重点==)函数式接口总结Lambda表达式 此文为学相伴项目课程笔记 问题 在实际应用场景中,不管你做什么,怎么优化,用户需求总是在不断变化 那么,在理想状态下,应该把自己的开发的工作量降到最小? 此外类似的功能还应该很简单,而且易于长期维护 所以要如何做? 此处我们可以引出行为参数化 行为参数化 行为参数化:就是可以帮助你处理频繁变更的需求的一种软件开发模式。 简单来说,就是准

qq_47267252的博客 1134

【JavaSE】匿名内部类

4.2 匿名内部类的使用(重要) (1)本质是类 (2)内部类 (3)该类没有名字(名字不是能直接看到的,实际上是系统取的) (4)同时还是一个对象 说明:匿名内部类是定义在外部类的局部位置,比如方法中,并且没有类名 匿名内部类的基本语法 new 类或接口(参数列表) { 类体 } 基于接口的匿名内部类 public class AnonymouseInnerClass { public static void main(String[] args) { Outer0

兮动人 777

刘意JavaSE 学习笔记——总纲

开始学习JavaSE了,记录下自己学习的进程。   学习大纲   1 开发环境配置 day01 配置 2 基础语法(基本差不多,看一下就好) day02 命名规则,进制转换 day03 运算符,if语句 day04 switch,for,while,break,continue,return语句 day05 方法 重载 一维数组 day06 二维数组 类,对象,内存解析 以...

desperatecat的博客 3851

JavaSE——面向对象基础(思想、类与对象、构造方法、重载、匿名对象)

第1节 面向对象基础 一、面向对象思想 1.1 概述 面向对象(Object Oriented)是软件开发方法。面向对象的概念和应用已超越了程序设计和软件开发,是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段的产物。 面向对象是相对于面向过程来讲的,指的是把相关的数据和方法组织为一个整体来看待,从更高的层次来进行系统建模,更贴近事物的自然运行模式。 面向过程到面向对象思想层面的转变: 面向过程关注的是执行的过程,面向对象关注的是具备功能的对象。 面向过程到面向对象,是

qq_40467656的博客 304

JavaSE——类与对象(5)

接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来。interface 接口名{属性方法class 类名 implements 接口{自己属性;自己方法;必须实现的接口的方法;在JDK7以前,接口中的所有方法都是抽象方法,在JDK7以后的版本中,可以有静态方法和默认方法。另外接口不需要声明为抽象类。一个类的内部完整的嵌套了另一个类结构,被嵌套的类称为内部类,嵌套其它类的类被称为外部类。class Outer{//外部类//属性。

qq_55890817的博客 1266
上一篇: [javase学习笔记]-6.4 成员变量与局部变量
下一篇: [javase学习笔记]-6.6 基本数据类型参数与引用数据类型参数的传递过程
fbl_csdn
博客等级 码龄12年 24粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值