Java学习-内部类

CAN-do-paser:Java开发的CAN总线数据帧解析库 CAN总线数据帧使用DBC文件信息解析为物理量,基于Java开发的数据解析工具。 阅读详情

一、概念

内部类:在一个类的内部定义的一个类;
分类: 可以分为 成员内部类、局部内部类、匿名内部类和静态内部类;

《Think in java》):
1、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。
2、在单个外围类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。
3、创建内部类对象的时刻并不依赖于外围类对象的创建。
4、内部类并没有令人迷惑的“is-a”关系,他就是一个独立的实体。
5、内部类提供了更好的封装,除了该外围类,其他类都不能访问。

二、各种内部类的介绍
1.成员内部类

特点:
1.成员内部类可以直接访问外部类的成员(包括private定义的成员),而外部类不能直接访问内部类的成员属性和方法。
2.成员内部类是依附在外部类,需要先创建外部类对象才能创建内部类对象;
3.成员内部类区别于静态内部类,成员内部类中不能存在static的成员和方法;

//相对于内部类,这是外部类
public class Outer {
   private int out = 1;//private的外部类变量
   
   public void OutPrint() {
   	System.out.println("Out:"+out);
   }
   
//内部类
   public class Inner {
   	int inn;
   	
   	public void InPrint() {
   		System.out.println("In中的Out:"+out);//可以使用外部类的成员变量
   		OutPrint();//可以使用外部类的方法
   	}
   }
//
}

public class Show {

   public static void main(String[] args) {
   	Outer o = new Outer();//1.外部类创建对象
   	Outer.Inner i = o.new Inner();//2.外部类的对象创建后,创建内部类对象
//		Inner i = new Inner();不会报错但是是无效定义方式
//		Outer.Inner j = new Outer().new Inner();//结合1和2直接创建也是可行的
   	i.InPrint();
   }

}
console结果:
In中的Out:1
Out:1

2.局部内部类
概念: 定义在外部类方法或作用域内的类

特点:
1.局部内部类可以直接访问外部类的成员;
2.在局部位置可以创建局部内部类对象,通过对象调用成员;
3. 局部内部类在访问局部变量时,被访问的变量必须用 final 修饰;

3.匿名内部类

简单写法:

 new 父类(){
 重写方法;
 };
 new 接口(){
 实现方法;
 };

特点:
1.匿名内部类我们必须是继承一个父类或者实现一个接口,不能是抽象的;
2.匿名内部类仅能被使用一次因为匿名内部类是直接使用new来生成一个对象的引用,该类的定义会立即消失;
3.匿名内部类中是不能定义构造函数的,匿名内部类中不能存在任何的静态成员变量和静态方法;
4.匿名对象可以作为实际参数传递;
5.如果定义了一个匿名内部类,并且希望它使用一个其外部定义的参数,那么编译器会要求该参数引用是final的;

使用时机: 当一个对象只需要使用一次可以使用,匿名对象使用完毕就变成垃圾被回收;

//抽象类
public abstract class Person {
	String name;
	int age;
	
	public abstract void Print();
}

//接口
public interface PlayBall {
	public abstract void Play();
}

//
public class Show {
	//定义一个测试匿名类对象可以作为形参传递的方法
	public static void Test(Person pp) {
		pp.Print();
	}

	public static void main(String[] args) {
		//创建抽象类的匿名内部类
		new Person() {
			public void Print() {
				System.out.println("hello");
			}
		};
		//使用new创建匿名内部类后,直接引用其成员
		new Person() {
			public void Print() {
				System.out.println("hello");
			}
		}.Print();
		
		//通过多态创建对象
		Person a= new Person() {
			public void Print() {
				System.out.println("hello");
			}
		};
		a.Print();
		
		//匿名类对象作为形参
		Show.Test( new Person() {
			public void Print() {
				System.out.println("hello");
			}
		});
		
		//创建接口的内部类,同样道理,可以通过多态创建对象
		PlayBall p = new PlayBall() {
			public void Play() {
				System.out.println("踢足球");
			}
		};
		p.Play();
	}
}


console结果:
hello
hello
hello
踢足球

4.静态内部类
使用static修饰的内部类
特点:
1.不能访问任何外部类的非static成员变量和方法
2.静态内部类可以直接创建实例不需要依赖于外围类

谱方法学习笔记-下(超详细) 《谱方法学习笔记》深入介绍了傅立叶谱方法在解决偏微分方程问题中的理论和实践,提供了清晰的步骤、Matlab代码以及对一维、二维波动方程等不同问题的解析,适合对谱方法感兴趣的学习者。 阅读详情

相关推荐

23.网工入门篇--------介绍一下园区网典型组网架构及案例实践

园区网典型组网架构主要分为小型、中型、大型三种类型,以下是详细介绍及相关案例实践:

qq_31450765的博客 964

Java学习-接口

概念 接口interface:接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合 格式 使用interface来进行声明,使用implements来实现接口 //接口模板 public interface InterfaceName{ public abstract void Act(); } //一个类实现接口模板,多个接口使用逗号隔开 public ...

Jagger_Lin的博客 232

Oracle 11g RAC 节点通信故障排查与修复指南

本文详细介绍了Oracle 11g RAC集群发生节点通信故障时的系统性排查与修复方法。当出现节点异常重启时,核心问题往往源于心跳网络中断。文章提供了从快速诊断、日志分析到六层深度检查的完整指南,并给出了针对网络配置、内核参数及Oracle已知Bug等常见根因的实战解决方案,帮助DBA快速恢复集群稳定。

weixin_29246195的博客 271

Java学习-集合类

一.概念 1.数学中: 集合:数学定义上指具有某种特定性质的具体的或抽象的对象汇总而成的集体。其中构成集合的这些对象则称为该集合的元素 。 数组:数学中所谓数组,是有序的元素序列。数组是用于储存多个相同类型数据的集合。 2.编程中: 集合类:负责保存、盛装程序创建的对象,因此集合类也被称为容器类;Java集合类存放于 java.util 包中; 数组:数组只能放统一类型的数据,而且一旦在数组初始化...

Jagger_Lin的博客 328

KUKA机器人 - 从开机到自动运行

注1:本文仅代表本人对机器人使用的一些建议,在使用机器人前,还请详细阅读库卡机器人官方资料,道路千万条,安全第一条!!! 注2:技术有限,欢迎各位大大在阅读过程中发现各类问题,并且批评指正!!! 目录 一、准备工作 1. 机器人上电完成 2. 电脑安装Workvisual 二、学习手动移动机器人 三、项目配置 1. 设置机器人IP地址 2.电脑和机器人通过网线连接 3.查找并打开项目 4. 通讯配置 5. 项目上传 6. 检验IO配置 四、编程 1.新建程序 2. 程序...

yilunyao的博客 1万+

工业音频故障检测:从CNN到Transformer的技术演进

音频信号处理是工业设备预测性维护的核心技术之一,通过分析设备运行时产生的声波特征实现故障预警。传统方法依赖梅尔频率倒谱系数(MFCC)等手工特征,而深度学习技术尤其是Transformer架构,通过自注意力机制突破了CNN在跨频段特征提取上的局限。Audio Spectrogram Transformer(AST)等先进模型在工业场景中展现出91.2%的高召回率,显著优于传统方案。这种非接触式监测技术结合边缘计算优化,已成功应用于石油化工、电力能源等领域,实现提前72小时预测轴承故障,单项目可避免数百万元的

weixin_30467861的博客 326

Java学习-标准描述类的写法

类的格式: public class 类名{ //一个标准的java描述类: 1.私有化成员变量 2.为私有化的成员变量提供set/get方法 3.提供有参数和无参数的构造方法 4.还需要写一个功能性的方法 //成员变量 //构造方法 //成员方法 } 1.封装 1.1封装是指隐藏对象的属性和实现细节,仅对外提供公共访问方式...

Jagger_Lin的博客 2363

【AAOS】【源码分析】用户管理(五)-- MUMD介绍

MUMD(多用户多屏显示)是Android Automotive OS为车载多乘员场景设计的功能,支持不同座位用户独立操作各自屏幕。

码农的历程 1510

Java学习-数据操作高级篇

一、封装类(包装类) 1.数字封装类:Byte,Short,Integer,Long,Float,Double ,这些类都是抽象类Number的子类; 2.基本类型转封装类 方法1:通过构造方法: int i = 10;//基本类型 Integer it = new Integer(i);//转换 方法2:自动装箱: //分开写 int i =10; Integer it = i; /...

Jagger_Lin的博客 352

【yolo】如何在 YOLOv8 中添加负样本以减少误检

在YOLOv8目标检测中,误检(False Positive)是一个常见问题,即模型将非目标区域错误识别为目标。通过引入负样本(Negative Samples),即不包含任何目标框的图像,可以有效减少误检。在YOLOv8中添加负样本的方法是为这些图像提供空的标注文件(.txt),确保每张图像都有对应的标注文件,即使内容为空。可以使用Python脚本自动生成这些空标注文件。使用负样本时需注意数量比例、标注一致性、验证集同步和图像质量。适当加入负样本能显著提升模型鲁棒性,降低误判风险。

songhuangong123的博客 2879

[Dify实战] [安全合规] 用 Dify 优化安全巡检:从经验驱动到标准闭环-带绑定资源

摘要:企业信息系统安全管理中,安全合规巡检面临标准不统一、整改难追踪等痛点。本文提出基于Dify工具的智能化解决方案,通过自动化工作流实现标准检查清单生成、风险等级标注、整改建议输出及审计记录归档。方案采用结构化Prompt模板和Markdown输出格式,涵盖账号权限、数据安全等核心维度,并提供证据收集建议和闭环管理机制,帮助组织从人工经验驱动转向数据流程驱动的合规管理。配套可导入Dify的工作流文件将随后发布。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 272

Java学习-异常

一、概述 1.异常概念:在程序运行时,发生的不被期望的事件,阻止了程序按照程序员的预期正常执行; 2.异常处理(exception handing): 1)向用户报告错误信息; 2)保存所有的工作结果; 3)允许用户以妥善的形式退出程序; 3.异常结构: Java中Throwable类异常类型的顶层父类,然后Throwable又派生出Error类和Exception类; 3.1根据Java异常产...

Jagger_Lin的博客 498

YOLO26涨点改进 | 细节涨点篇 | 源自SCI一区 | YOLO26引入HWD小波下采样模块,而不会显著增加计算开销,(适合小目标分割任务、小目标检测任务)

本文提出了一种基于Haar小波变换的下采样模块HWD,用于改进YOLO26目标检测性能。HWD模块通过小波变换降低特征图分辨率,同时将空间信息编码到通道维度,有效保留了关键信息。相比传统下采样方法,HWD能显著减少信息不确定性,提升小目标检测精度。实验表明,该模块可无缝集成到CNN架构中,不增加计算开销。文章详细介绍了HWD的实现原理、代码结构以及在YOLO26中的集成方法,并提供了两种改进版yaml配置文件。该创新模块已在多种数据集上验证有效,特别适合语义分割和目标检测任务。

Ai缝合怪、助力小伙伴高效发论文 401

Java 内部类学习笔记

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

2301_78498098的博客 1507

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Devexpress16.2.6破解工具

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

【Java】内部类【主线学习笔记】

内部类;Java是一门功能强大且广泛应用的编程语言,具有跨平台性和高效的执行速度,广受开发者喜爱。在接下来的学习过程中,我将记录学习过程中的基础语法、框架和实践技巧等,分享学习心得,对自己学习过程进行整理和总结,也希望能为其他学习Java的朋友提供一些帮助和参考。

CBCY_csdn的博客 693

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Java学习第十天内部类

内部类:匿名内部类 静态内部类 成员内部类 局部内部类

Y_Y1230704的博客 496

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Java内部类学习笔记   

  本文主要讲述Java内部类学习笔记,更多Java技术知识,请登陆疯狂软件教育官网。加微信号疯狂软件,或者用微信搜索疯狂软件,参加2015年优惠活动,有机会获得优惠劵和代金劵。  一直以来认为内部类只是名字隐藏和组织代码的模式,今天从Java mindview中看到一些内部类的用法,当生成一个内 部类的对象时,此对象与制造它的外围对象之间有了一种联系,所以它能访问其外围对...

weixin_34413357的博客 182

Java学习笔记之---内部类

Java学习笔记之---内部类 (一)成员内部类 内部类在外部使用时,无法直接实例化,需要借助外部类信息才能实例化 内部类的访问修饰符可以任意,但是访问范围会受到影响 内部类可以直接访问外部类的成员,如果出现重名属性,优先访问内部类中定义的 可以使用外部类.this.成员的方法,访问外部类中同名的信息 外部类访问内部类信息,需要通过内部类实例,无法直接访问 内部类编译后.clas...

weixin_30840253的博客 87

java内部类学习

java内部类 一、什么是内部类? 可以将一个类的定义放在里另一个类的内部,这就是内部类。 二、内部类分类 广义上我们将内部类分为四种:成员内部类、静态内部类、局部(方法)内部类、匿名内部类。 三、内部类介绍 接下来内部类参考其他博主的文章。其他博主的文章写得很好了。参考一下。 参考文章如下:http://www.cnblogs.com/dolphin0520/p/3811445.html 博...

自学java小白的博客 191

【Java 学习】:内部类详解

本文介绍了Java中的内部类概念,包括实例内部类、静态内部类、局部内部类和匿名内部类的定义、特点及使用场景。内部类是Java中实现封装的一种方式,可以访问外部类的所有成员,常用于回调函数和事件处理。实例内部类需要外部类实例化,静态内部类则可以直接通过外部类名访问,局部内部类仅在其定义的方法或代码块内有效,而匿名内部类通常用于一次性实现接口或类。

island1314的博客 3957

java 内部类的学习总结

内部类 参考文档:https://www.runoob.com/w3cnote/java-inner-class-intro.html 在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部类的用法。 1.成员内部类 //1.成员内部类地位和类的成员等同 //2.成员内部类可以访问外部类的任意成员方法。 //3.如果外部类需要访问内部类,则需要先创建内.

qq_40331861的博客 265

【Java学习】内部类

因为静态与非静态都是对于外部类管理它里面成员而言的,只是内部类成员要多上对将来使用场景负责,其实不管是被静态还是被非静态修饰,对于类本身而言没有影响的,在它们里面的非静态方法自然都有此类变量引用的隐藏形参,不是说被static修饰后的类就不能对它创似复刻变量了,一样是可以的。

Brookty的博客 1606

Java内部类学习总结

目录目录 概述 非静态内部类 从外部类的非静态方法中实例化内部类 从外部类的静态方法中实例化内部类 内部类的this引用 静态内部类 从外部类的非静态方法中实例化静态内部类 从外部类静态方法中实例化静态内部类 匿名内部类 方法内部类概述最近学习python,发现python是支持多继承的,这让我想起Java是通过内部类实现的这套机制。这篇文章不是讲如何通过内部类实现多继承,而是总结一下内部类的类型和

小一的专栏 4727

JAVA学习 内部类

JAVA学习 内部类

Nanashi_wumi的博客 299

Java内部类学习

Java内部类学习

jacknoe的博客 182

java内部类的学习

1. 内部类的分类 内部类就是在一个类中又定义一个类。 静态内部类:static修饰的内部类。 普通内部类:不用static修饰的内部类。 局部内部类:在类中方法内定义的内部类。 2.内部类的基本语法 3.内部类的特点 内部类可以访问其所在类的属性(包括私有属性),内部类创建自身对象需要先创建其所在类的对象。 普通内部类里面不能定义static属性和方法 原因:普通内部类的存在依赖于外部类的对象,static随着类的加载而加载,产生了冲突。 静态内部类可以定义static sta

qq_40346958的博客 165
上一篇: Java学习-关键字Static和Final
下一篇: Java学习-原理研究
Jagger_Lin
博客等级 码龄8年 17粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值