首页 > 编程语言 >javaSE--匿名内部类

javaSE--匿名内部类

时间:2023-08-15 11:01:35浏览次数:33  
标签:Compute 内部 -- public int 匿名 static javaSE class

一、内部类

1、内部类

  在类的内部又定义一个新的类,被称为内部类

2、内部类的分类

  静态内部类:类似于静态变量

  实例内部类:类似于实例变量

  局部内部类:类似于局部变量(匿名内部类属于局部内部类一种)

3、使用内部类编写的代码,可读性较差,能不用尽量不用

class Test01{

	// 静态变量
	static String country;
	// 该类在类的内部,所以称为内部类
	// 由于前面有static,所以称为“静态内部类”
	static class Inner1{
	}
	
	// 实例变量
	int age;
	// 该类在类的内部,所以称为内部类
	// 没有static叫做实例内部类。
	class Inner2{
	}

	// 方法
	public void doSome(){
		// 局部变量
		int i = 100;
		// 该类在类的内部,所以称为内部类
		// 局部内部类。
		class Inner3{
		}
	}

	public void doOther(){
		// doSome()方法中的局部内部类Inner3,在doOther()中不能用。
	}

}

二、匿名内部类

class Test01{
	public static void main(String[] args){
		// 调用MyMath中的mySum方法。
		MyMath mm = new MyMath();
		
		// 使用匿名内部类,表示这个ComputeImpl这个类没名字了。
		// 这里表面看上去好像是接口可以直接new了,实际上并不是接口可以new了。
		// 后面的{} 代表了对接口的实现。
		// 不建议使用匿名内部类,一个类没有名字,没有办法重复使用。另外代码太乱,可读性太差。
		mm.mySum(new Compute(){
			public int sum(int a, int b){
				return a + b;
			}
		}, 200, 300);

	}

}

// 负责计算的接口
interface Compute{ 
	
	// 抽象方法
	int sum(int a, int b);
}

// 你自动会在这里编写一个Compute接口的实现类
/*
class ComputeImpl implements Compute{

	// 对方法的实现
	public int sum(int a, int b){
		return a + b;
	}
}
*/

// 数学类
class MyMath{
	// 数学求和方法
	public void mySum(Compute c, int x, int y){
		int retValue = c.sum(x, y);
		System.out.println(x + "+" + y + "=" + retValue);
	}	
}

 

标签:Compute,内部,--,public,int,匿名,static,javaSE,class
From: https://www.cnblogs.com/hyy-0/p/17614487.html

相关文章

  • ABP .NET创建项目(三)
    ABP.NET创建项目(三)(进阶部分)在ABP.NET创建项目(二)(进阶部分)的基础上增加代码增加缓存方法。好处:比如在多次重复的数据库查询操作中,结果相同,但利用缓存可以使得第一次同普通查询一样查询,而后续的重复操作查询可以直接用(return)缓存中存储的查询结果而非再次进行数据库查询操......
  • 识别图片和视频中不同肤色的人数
    前面利用ResNet18实现了二分类,这里借助分类网络来识别图片和视频中不同肤色的人数。大体流程可以分为以下几步:数据获取、数据处理、模型训练、图片识别以及视频识别,其中大部分内容参考《机器视觉之TensorFlow2入门、原理与应用实践》第4章。一、数据获取这里获取黑人和白人模特......
  • 一次说清Odoo的邮箱配置
    odoo的邮箱配置从很早的版本时就是一个问题,可能在国外用的很丝滑的功能,在国内就水土不服。本文就试图将邮箱配置的问题一次说个清楚。原生系统的邮箱使用本着知其然又知其所以然的标准,我们应该先理一下原生的功能,知道它原本的样子之后,我们才能知道问题在哪,再想办法去解决这些问......
  • JavaSE--抽象类和接口
    一、抽象类1、抽象类  1)抽象类无法实例化,无法创建对象  2)抽象类:是类和类之间的共同特征,将这些具有共同特征的类再进一步抽象形成了抽象类,由于类本身是不存在的,所以抽象类无法创建对象,抽象类与抽象类之间也还有共同特征,还可以再一步抽象  3)抽象类是无法实例化的,无法创建......
  • docker-compose启动开发环境
    前言经常需要搭建自己的环境,做个笔记。-操作系统:DeepinV23-Docker版本:24.0.5Gitee地址:链接启动准备1.配置Docker国内加速(配置完成重启docker)文件:/etc/docker/daemon.json{"registry-mirrors":["https://hub-mirror.c.163.com"]}2.命令行创建网络net-devdock......
  • 为什么会有 AtomicReference ?
    我把自己以往的文章汇总成为了Github,欢迎各位大佬starhttps://github.com/crisxuan/bestJavaer我们之前了解过了AtomicInteger、AtomicLong、AtomicBoolean等原子性工具类,下面我们继续了解一下位于java.util.concurrent.atomic包下的工具类。关于AtomicInteger、Ato......
  • 使用 OpenSSL 解密 DBeaver 保存的数据库连接信息获取数据库连接密码
    你是不是使用任何软件时都喜欢记住密码?是的,我也喜欢。但如果有一天你想把密码分享给其他人,而你又不记得密码是什么了,没错你可以去查看已保存的密码,但是当你使用的是DBeaver时,不好意思,没有查看已保存的密码功能,这个时候不就尴尬了嘛。那么现在你也许不再需要因此而烦恼了,因为......
  • CMakeLists语法详解
     https://www.jianshu.com/p/eb25baf5ca19set(Root"${CMAKE_CURRENT_SOURCE_DIR}")set(Base64${Root}/lib/libb64/src)include_directories(${OpenCV_INCLUDE_DIRS})include_directories(${Root})include_directories(${Root}/lib/libb64/include) include_dir......
  • 数学基础
    数学基础单变量微积分隐式函数求导\[f(x)+g(y)=C\]两边取\(x\)的导\[\fracd{dx}f(x)+\fracd{dy}g(y)*\frac{dy}{dx}=0\]化简\[\frac{dy}{dx}=-\frac{f'(x)}{g'(y)}\]无穷小量\(x\)的变化趋于0,\(\Deltax\)也趋于0,则\(\Deltax\)为\(x\)的无穷小量......
  • VSCode如何在行内显示变量值
    背景在调试时,我们希望能够直接在代码行显示变量的值,而不是总是去侧边栏查看,如下这种,y=12直接显示在代码行。那么VSCode中如何做呢设置VSCode提供了“inlinevalues”设置,但为了速度,默认并没有开启,我们只需修改配置即可开启这个功能。效果......