java学习笔记--基础知识--内部类---在方法中定义

java学习笔记32:内部类:静态和非静态内部类、匿名内部类、方法内部类 一、内部类 内部类(innerclasses):把一个类放在另一个类的内部定义      内部类可以使用public、default、protected 、private以及static修饰。而外部顶级类(我们以前接触的类)只能使用public和default修饰。 注意   内部类只是一个编译时概念,一旦我们编译成功,就会成为完全不同的两个类。对于一个名为Outer的外部类和其内部定义的名为In... 阅读详情

在方法中定义的内部类,我们称之为 local inner class, 局部内部类?

在方法内部定义


interface  MyInterface{
	
	void showMe();
}

public class Outer {
	
	private String name = "DASHA";
	
	
	
//  在函数内部实现的内部类,需要实现某个接口,因为Inner这个类名在getInner函数之外是不可见的,下面的定义是无法编译的
//	public Inner getInner(){
//		
//		public class Inner{
//			
//			public Outer getOuter(){
//				return Outer.this;
//			}
//		}
//		
//		return new Inner();
//	}
	
	public MyInterface getInner(){
	
		String text = "My Name is ";
		//定义一个内部类
		class Inner implements MyInterface{

			//在内部类里既可以访问方法的局部变量,也能访问outer类的属性和方法
			@Override
			public void showMe() {
				System.out.println(text + name);
			}
		}
		
		return new Inner();  //此处实际返回的类型是MyInterface
        }

        public void showInner(){
		
		//Inner类仅在它定义的那个方法中可见
		//Inner dd = new Inner()
	}
	
	
	public static void main(String[] args){
		
		MyInterface mi = new Outer().getInner();
		
		mi.showMe();

	}

}

 

在方法内部的局部区域定义内部类

interface  MyInterface{
	
	void showMe();
}

public class Outer {
	
	private String name = "DASHA";
	
	public MyInterface getInner(boolean bCreate){
		
		//如果内部类没有阐释改下text的内容,那么也可以不用final修饰  
		//反正意思就是Inner类不要修改所在的方法的局部变量
		//String text = "You are";
		final String text = "You are ";
		
		if(bCreate){
			//定义一个内部类,它尽在这个if分支中可见
			class Inner implements MyInterface{
	
				//在内部类里既可以访问方法的局部变量,也能访问outer类的属性和方法
				@Override
				public void showMe() {
					System.out.println(text + name);
				}
				
				public Inner(String desc){
					name = desc;
				}
			}
		
			return new Inner("HUAIDAN");  //此处实际返回的类型是MyInterface
		
		}else{
			
			//此处是无法使用Inner的,Inner只能在它定义的那个scope中访问
			//return new Inner();
			
			return null;
		}
    }
	
	
	public static void main(String[] args){
		
		MyInterface mi = new Outer().getInner(true); //这里需要注意的是就是传入的是false,inner类也会被编译出来
		
		mi.showMe();

	}

}

 

【Java基础知识 16】java内部类使用场景 Java基础教程系列,打造精品专栏。 阅读详情

相关推荐

【Java基础知识 37】Java内部类、java内部类的作用

Java内部类是定义在另一个类内部的类,可以访问外部类的成员变量和方法。内部类可以分为成员内部类、局部内部类、匿名内部类和静态内部类四种类型。其中,成员内部类和局部内部类必须依托于外部类的实例存在,而静态内部类则可以独立存在。匿名内部类是一种没有名字的内部类,通常用于创建实现某个接口或继承某个类的对象。

学Java,找哪吒 4378

java 不能引用另一方法中定义的内部类中非终态变量

package com.study; public class Test { public void test01(){ String m = "外部定义的方法"; class Test02{ public Test02() { System.out.println(m); } } } ...

try_and_do的博客 2451

【毕设】基于LoRa的物联网控制器:从原理图到PCB的完整硬件设计指南

本文提供了一份完整的基于LoRa的物联网控制器硬件设计指南,涵盖从系统框图、原理图设计到PCB布局布线的全流程。详细讲解了电源电路、单片机最小系统、信号接口以及LoRa无线模块等核心模块的设计要点与抗干扰技巧,并分享了实用的调试心得,旨在帮助电子、物联网专业学生顺利完成毕业设计,掌握低功耗远距离物联网节点的硬件开发实践。

weixin_42126677的博客 307

不能引用另一方法中定义的内部类中非终态变量

看下面代码 public class T{ String str; T(String str){ this.str = str; class Temp{ Temp(){ System.out.println(str); //报错 不能引用另一方法中定义的内部类中非终态变量 } } } public static void main(String[]

cyh 4066

AutoCAD Plant 3D自定义零件库实战:手把手教你用Python创建参数化槽式三通

本文详细介绍了如何利用Python脚本在AutoCAD Plant 3D中创建参数化槽式三通组件,从API原理到实战开发,帮助用户构建高效的自定义零件库。通过Python装饰器系统控制零件属性和行为,实现几何建模、参数管理和规格编辑器集成,提升工业管道设计的标准化和效率。

weixin_28267011的博客 331

全桥LLC谐振变换器变频控制工作原理与仿真

全桥LLC谐振变换器以其效率高、全范围软开关、器件电应力小等优点,越来越多地应用于大功率场合。电力电子技术的发展日益追求高频化,所带来的问题是半导体开关器件高频运行时的开关损耗急剧增加。各种软开关电路随之出现。可以有效减小开关损耗,使进一步提高开关频率成为可能。谐振式开关因其可在电流自然过零点开通半导体器件,实现零电压开关,特别适合采用MOSFET作开关的装置。最简单的谐振电路有串联谐振(SRC)和并联谐振(PRC)。SRC只能工作于降压状态,应用受限;

晞子的技术札记 3075

android 不能引用另一方法中定义的内部类中非终态变量,如何在非静态内部类的另一个实例中引用外部类?...

我正在使用Apache Commons EqualsBuilder来为非静态Java内部类构建equals方法。例如:import org.apache.commons.lang.builder.EqualsBuilder;public class Foo {public class Bar {private Bar() {}public Foo getMyFoo() {return Foo.th...

weixin_29000891的博客 208

Python+QMT量化交易实战:从零搭建你的第一个极速策略(附完整代码)

本文提供了一份详细的Python+QMT量化交易实战指南,手把手教你从零搭建一个可回测、可实盘的极速策略。内容涵盖环境配置、QMT核心机制解析、双均线策略的完整代码实现、回测优化方法以及实盘部署要点,帮助量化交易新手快速入门并掌握核心开发流程。

b9c0d的博客 1014

java中不能引用另一方法中定义的内部类中非终态_java 06 作业代码

作业:一、final 修饰方法和变量,类,修饰类不能被继承,修饰方法不能被重写,修饰变量 就只能赋值一次JiafeiCat 是终态类,不能被继承cat中定义Catnouse方法,该方法不能被重写。Zangao 中定义常量二、实现内部类a.外部类ChianMap(ratio)b.定义内部类,NashQunDaoMap(ratio)三、集体类为何不能有抽象方法具体类可以实例化对象,实例化对象了,就可以...

weixin_29474859的博客 283

零基础吃透!Python爬虫实战:超详细爬取小红书图文,解析封面+标题+文案全流程

本文为零基础开发者提供小红书图文爬取全流程指南,针对动态加载、严格反爬等核心痛点,从环境配置到数据解析详细讲解。主要内容包括: 核心特性分析:动态加载机制需抓包获取真实接口,严格反爬依赖Cookie验证和请求头伪装 环境准备:Python 3.8-3.10环境,使用requests/beautifulsoup4等库,通过浏览器开发者工具获取有效Cookie 实战步骤: 定位关键API接口(note/list) 配置请求头(含Cookie/User-Agent/Referer) 实现分页爬取和异常处理 解析封

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 730

《MATLAB项目实战》,专栏目录和介绍

MATLAB 是一款强大且广泛应用的数值计算和数据可视化软件工具,它提供了一个高效、简洁的编程环境,使用户能够进行从简单的矩阵运算到复杂的多维数据分析的各种计算任务。无论是在人工智能、计算机视觉、图像处理还是其他领域,MATLAB 都能够提供精准、快速的解决方案,因此成为了全球科研人员、工程师以及数据分析师的得力工具。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 6478

桌面弹球--学习笔记(二)

下面实现主界面类(BallFrame)和业务处理类(BallService)。 主界面类(BallFrame)中定义了: 一个业务处理类(BallService)的对象,通过调用BallService中的方法来处理业务逻辑; 一个初始化方法initialize(),用来初始化游戏的界面; 一个画板类(BallPanel),该内部类继承了JPanel,重写了void paint(Graphi...

iteye_9578的博客 271

226届数字IC秋招笔试面试全攻略

本文系统介绍了数字IC设计岗位面试的核心技巧,聚焦三大关键环节:自我介绍、项目介绍和技术问题回答。在自我介绍部分,强调1-2分钟结构化表达,突出与岗位匹配的技能和量化成果;项目介绍环节提出"背景-职责-技术-难点-成果"五步框架,建议结合架构图和性能数据展示技术深度;技术问题回答策略包括理解问题、结构化思考、举例说明和诚实应对未知。文章还提供了项目包装方法,指导如何通过量化数据、架构创新展示和技术难点解决方案来突出项目亮点,并附有简历项目描述示例和技术问题回答模板,帮助面试者全方位展示专

2301_79143213的博客 1062

Java内部类的定义、如何创建内部类、内部类的分类、内部类与外部类的关系

文章目录1 内部类的基本概念1.1 内部类的定义1.2 内部类的优缺点2 创建内部类2.1 在外部类外部创建非静态内部类2.2 在外部类外部创建静态内部类2.3 在外部类内部创建内部类语法3 内部类的分类3.1 成员内部类3.2 静态内部类3.3 方法内部类3.4 匿名内部类4 内部类与外部类的关系 1 内部类的基本概念 1.1 内部类的定义   内部类: 所谓内部类就是在一个类内部进行其他类结构...

zhao_miao的博客 11万+

Open3D点云算法与点云深度学习案例汇总(长期更新)

Open3D-python算法专栏文章汇总,长期更新算法原理与实战案例。

纵马踏花向自由 7469

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Java 内部类学习笔记

内部类是Java中一个强大的特性,能够帮助开发者实现更灵活的类设计和代码组织。通过合理使用内部类,可以解决多重继承问题、提高代码的封装性和可读性。但在实际开发中,应避免滥用内部类,以免增加代码的复杂度和维护成本。

2301_78498098的博客 1507

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Java——内部类使用总结(基本概念、定义内部类、static定义内部类、方法中定义内部类)

1、基本概念 类的组成包括:成员、方法,几乎所有程序都不会对嵌套程序有什么限定,内部类指的是在一个类中继续嵌套其他类结构的一种代码形式,且理论上可以一直嵌套。 【举例】:观察内部类 public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundl...

数字世界 万物互联 783

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

java内部类的定义、内部类的分类

内部类 基本介绍 一个类的内部又完整的嵌套了另一个类结构。被嵌套的类称为内部类(inner class),嵌套其他类的类称为外部类(outer class)。是我们类的第五大成员,内部类最大的特点就是可以直接访问私有属性,并且可以体现类与类之间的包含关系 基本语法: class Outer{ class Inner{ } } 内部类的分类: 1.定义在外部类局部位置上(比如方法内): 1).局部内那类(有类名) 2).匿名内部类(没有类名,重点); 定义在外部类的成员位置上: 1)成员内部类(没

Q2854542067的博客 2300

方法中定义内部类

如下所示代码为在方法内部定义一个内部类: public class FunOuter { int out_x = 100; public void test(){ class Inner{ String x = "x"; void display(){ System.out.println(out_x); } } Inner inner = new Inner(); inne

SongCdut的专栏 9642

Java内部类:你真得了解方法内部类吗?

文章目录Java内部类:你真得了解方法内部类吗?普通内部类方法内部类匿名内部类静态内部类参考Thinking in Java Java内部类:你真得了解方法内部类吗? java内部类,相信很多人都使用过内部类,新建线程使用的匿名内部类,但是有很多人对内部类的一些概念处于模糊阶段,比如为什么方法内部类引用方法参数,方法参数必须设置为final,所以本文系统得整理了一下内部类知识,如果有用得话,记得...

zycxnanwang的博客 1495

【JAVA学习笔记】匿名内部类与静态内部类

匿名内部类是一种没有名字的内部类,它在定义的同时就被实例化,通常用于简化代码,特别是在需要一次性实现某个类或接口的时候。静态内部类是使用static关键字修饰的内部类,它与外部类的其他成员不同,不依赖于外部类的实例,可以直接通过外部类的类名来访问。// 静态内部类// 非静态内部类// 实例化静态内部类// 输出:This is a static inner class.// 实例化非静态内部类需要先创建外部类实例。

weixin_48272591的博客 1798

JAVA内部类的定义与使用(成员内部类,静态内部类,方法内部类,匿名内部类)

1. 创建内部类 1.1 在外部类外部 创建非静态内部类 语法: 外部类.内部类 内部类对象 = new 外部类().new 内部类(); 举例: Outer.Inner in = new Outer().new Inner(); 1.2 在外部类外部 创建静态内部类 语法: 外部类.内部类 内部类对象 = new 外部类.内部类(); 举例: Outer.Inner in = new Outer.Inner(); 1.3 在外部类内部创建内部类语法 在外部类内部创建内部类,就像普通对象一样直接创建:Inn

qq_34748010的博客 1544

Java---内部类的定义与用法

目录 一. 内部类概述 二. 成员内部类 2.1 普通内部类 2.2 静态内部类 三. 局部内部类 四.匿名类 五.对象的打印 一. 内部类概述 内部类是定义在另一个类中的类,内部类也是封装的一种的体现。为什么要使用内部类,主要有两个原因: · 内部类可以对同一个包的其他类进行隐藏。 · 内部类方法可以访问定义这个类的作用域中的数据,包括原本私有的数据。 格式: public class OutClass { class InnerClass { ...

X_H学Java的博客 1396

Java|2种内部类定义方式

本博文讲解内部类的基本概念,也讲解了如何使用static定义内部类,如果用static定义,内部类变成外部类。介绍static定义内部类它的实例化方式与非static外部类实例化方式。最后在方法中定义内部类,还可以接受参数传递。

执念斩长河 881

java内部类的定义、使用

一、内部类的定义:顾明思议就是定义在类的内部,相对的这个类就是外部类 内部类中可包含:成员变量、成员方法(均不可是静态的) class Outer{ private String str ="外部类中的字符串"; //************************** //定义一个内部类 class Inner{ private String inStr= "内部类中的字符串"; //定义一个普通方法 public vo...

Cassiel717的博客 640
上一篇: java学习笔记--基础知识--内部类---在类中定义
下一篇: java学习笔记--基础知识--内部类---匿名内部类
guothree2003
博客等级 码龄19年 29粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值