【Java】内部类

认识内部类:Java中内部类分如下三种

匿名内部类

实例内部类

静态实例内部类

匿名内部类

匿名内部类顾名思义就是在创建的时候不用赋予名字。

代码演示:

//匿名内部类
interface IA{void test();
}
public class Main{public static void main(String[] args) {new IA(){@Overridepublic void test() {System.out.println("hallo World");}}.test();}
}

我们定义了一个接口 IA 接着我们在 Main 方法中实例化了该接口,但没有用引用来接收该接口,这就表示内部类,接着我们在内部类中重写了 test 方法,并且在最后调用了该方法。

运行截图:

实例内部类

我们在一个类中定义的变量和方法都叫做实例成员和实例方法,顾名思义定义在一个类中的类就被称作为实例内部类。

代码演示:

class OutClass{public int data1 = 1;private int data2 = 2;public static int data3 = 3;class InnerClass{public int data4 = 4;private int data5 = 5;public void test(){System.out.println("内部类的test方法");}}public void test(){System.out.println("外部类的test方法");}
}public class Main{public static void main(String[] args) {//获取实例内部类时,要依赖外部类OutClass outclass = new OutClass();OutClass.InnerClass innerclass = outclass.new InnerClass();OutClass.InnerClass innerclass2 = new OutClass().new InnerClass();innerclass2.test();innerclass.test();}
}

我们在 OutClass 类中定义了另外一个类 InnerClass ,在内部类中同样也可以拥有成员权限修饰符修饰的变量和方法。

既然定义了一个类,那么必然就可以实例化,这里我们实例化内部类有两种方法:

//获取实例内部类时,要依赖外部类
//第一种
OutClass outclass = new OutClass();
OutClass.InnerClass innerclass = outclass.new InnerClass();
//第二种
OutClass.InnerClass innerclass2 = new OutClass().new InnerClass();

我们在实例化内部类的时候必须要依靠外部类,也就是说我们先要实例化外部类,再实例化内部类。

上述代码的运行截图:

 

我们可以看出两种实例化都可行。

在内部类中我们能否有 static 修饰的成员?我们在编译器中试试看

我们发现报错了,为什么呢?我们知道被 static 修饰的成员就会变得不依靠实例,但是我们在实例化内部类的时候必须要依靠外部类的实例,很明显冲突了!

但是我们可以有 final 修饰的成员。

这时就不报错了!

如果在外部类和内部类中有同名的成员,那么如何在内部类中访问外部类的成员。

class OutClass{public int data1 = 1;private int data2 = 2;public static int data3 = 3;class InnerClass{public int data4 = 4;private int data5 = 5;public int data1 = 6;public void test(){System.out.println(OutClass.this.data1);}}public void test(){}
}public class Main{public static void main(String[] args) {OutClass.InnerClass innerclass2 = new OutClass().new InnerClass();innerclass2.test();}
}

运行截图:

使用 外部类类名.this.重名成员 就可以在内部类中访问外部类的重名成员。

在外部类中是不能直接访问内部类中的成员,如果要访问就必须要实例化内部类。

代码演示:

class OutClass{public int data1 = 1;private int data2 = 2;public static int data3 = 3;class InnerClass{public int data4 = 4;private int data5 = 5;public int data1 = 6;public void test(){System.out.println(OutClass.this.data1);}}public void test(){InnerClass innerclass = new InnerClass();System.out.println(innerclass.data4);}
}public class Main{public static void main(String[] args) {OutClass outclass = new OutClass();outclass.test();}
}

静态实例内部类

代码示例:

class OutClass{private int data1 = 1;public int data2 = 2;public static int data3 = 3;static class InnerClass{private int data4 = 4;public int data5 = 5;public static int data6 = 6;}
}
public class Main{public static void main(String[] args) {OutClass.InnerClass innerclass = new OutClass.InnerClass();System.out.println(innerclass.data5);}
}

运行结果:

我们在实例化静态内部类的时候就不需要依靠外部内部类的实例了,就变得方便了许多。

我们可以看到在静态内部类中定义成员变量用了 static 修饰,是的静态内部类可以用 static 修饰,因为静态内部类的实例化不依靠外部类的实例。

在静态内部类中是无法直接访问外部类的成员,并且外部类也无法直接访问静态内部类的成员,都必须借助实例化才能访问。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/33082.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做国际期货有什么心得?

做过现货,外汇,国际期货,当然,做国际期货的时间比较多,几乎占用了我的交易生涯全部。现在,来讲讲我做国际期货的真实经历,交易历程和心得体会,希望正在做国际期货,或打算…

Sapphire开发日志 (十) 关于页面

关于页面 任务介绍 关于页面用户对我组工作量的展示。 实现效果 代码解释 首先封装一个子组件用于展示用户头像和名称。 const UserGrid ({src,name,size,link, }: {src: any;name: any;size?: any;link?: any; }) > (<Box sx{{ display: "flex", flex…

每日一练:攻防世界:5-1 MulTzor

一、XorTool 基于 XOR&#xff08;异或&#xff09;运算实现。它可以帮助您快速地对文本、二进制文件进行加密解密操作。 认识XorTool工具&#xff1a; 让我们先去认识一下工具&#xff1a; xortool.py 是基于 python 的脚本&#xff0c;用于完成一些 xor 分析&#xff0c;…

【云计算 复习】第6节 AWS亚马逊

一、基础存储架构Dynamo 1.概述 &#xff08;1&#xff09;为了保证其稳定性&#xff0c;Amazon的系统采用完全的分布式、去中心化的架构。 &#xff08;2&#xff09;Dynamo只支持简单的键值对方式的数据存储&#xff0c;不支持复杂的查询 &#xff08;3&#xff09;Dynamo中…

腾讯 MOFA-Video: 可控制图转视频

腾讯 MOFA-Video: 可控制图转视频 MOFA-Video 它支持运动轨迹、人脸关键点并支持将其混合控制图像转换为视频。 混合控制: 结合图像、控制信号和关键点生成动画。 运动画笔: 结合图像、轨迹和画笔生成动画。 控制比例: 调整动画的控制比例&#xff0c;从纯 SVD 到完全控制。 通…

“人工智能+”带来新变化

以生成式人工智能&#xff08;AIGC&#xff09;为代表的新一代人工智能技术创新加速演进&#xff0c;相关商业化应用成果也不断涌现&#xff0c;行业应用范围不断拓展&#xff0c;深度赋能实体经济&#xff0c;为行业提质增效与实现减排提供助力。 自主航运初创公司OrcaAI于6月…

Appium+python自动化(二十一)- 让猴子按你指令大闹手机,让我们都成为耍猴高手(超详解)

宏哥微信粉丝群&#xff1a;https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入 简介  一年一度的暑假如期而至&#xff0c;每年必不可少的&#xff0c;便是《西游记》这部经典电视连续剧的播出&#xff0c;作为一名90后&#xff0c;对于这部经典剧的情谊&#xff…

深度学习工具jupyter创建并检测pytorch环境以及安装工具包

1. 前言 确保已经安装Python和anaconda&#xff08;anaconda一般自带jupyter&#xff09;。然后创建一个jupyter环境&#xff0c;查看启动后的new有没有环境选项。 如果遇到了EnvironmentLocationNotFound:Not such a environment。说明conda环境安装位置有问题&#xff0c;往…

Raspberry Pi AI Kit——Hailo-8L安装记录(预告)

Hailo-8的测试见往期文章&#xff0c;最近树莓派发布了官方套件——Raspberry Pi AI Kit&#xff0c;其采用Hailo-8L&#xff0c;算力为13TOPS&#xff0c;是Hailo-8算力的一半&#xff0c;官网地址为 Raspberry Pi AI Kit安装 最近在进行Raspberry Pi AI Kit使用测试 !](htt…

建议收藏!100款宝藏级AIGC工具分享,70款ChatGPT插件惊艳的开发过程与宏大的商业化愿景

建议收藏&#xff01;100款宝藏级AIGC工具分享&#xff0c;70款ChatGPT插件惊艳的开发过程与宏大的商业化愿景。 不输ChatGPT&#xff1f;整理了100款AIGC神器&#xff0c;打工人速进。 说到AIGC工具&#xff0c;你还是只知道ChatGPT&#xff1f; 实际上&#xff0c;越来越多…

景联文科技实力入选「2024中国AI大模型产业图谱1.0版」!

近日&#xff0c;数据智能产业创新服务媒体数据猿联合上海大数据联盟共同发布《2024中国AI大模型产业图谱1.0版》&#xff0c;从大数据和人工智能等智能技术的核心出发&#xff0c;全面覆盖整个产业链&#xff0c;为行业提供更为精细且直观的专业导向。 景联文科技凭借高质量数…

小区业主管理系统

摘 要 随着城市化进程的加速和人口的不断增加&#xff0c;小区的数量也在不断增加。小区作为城市居民居住的主要场所&#xff0c;其管理工作也变得越来越重要。传统的小区业主管理方式存在诸多问题&#xff0c;如信息传递不畅、业务处理效率低下等。因此&#xff0c;开发一个高…

“明天下班以后请假了,孩子中考“

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 前几天约服务器…

轻轻一按,即可加速您的 Mac

一键智能清理 让你的 Mac 电脑焕然一新 CleanMyMac X 是一款专业的 Mac 电脑清理软件&#xff0c;支持一键扫描 Mac 磁盘垃圾&#xff0c;智能清理垃圾文件和系统语言安装包&#xff0c;快速释放磁盘空间&#xff0c;让你的 Mac 电脑焕然一新&#xff01; 智能扫描一键清理 Ma…

模板匹配算法:基于模板相关性匹配的手写数字识别

1 前言 得益于硬件技术的发展&#xff0c;基于深度学习的各种识别方法如火如荼&#xff0c;在各种应用场景中都取得很好的效果。本人入行深度学习领域若干年&#xff0c;做过很多项目的工程化评估&#xff0c;对于神经网络是如何工作的也解释不清楚&#xff0c;只是知道这样做是…

【IVIF】Equivariant Multi-Modality Image Fusion

2024CVPR Zixiang Zhao团队 分析透彻&#xff0c;方法耳目一新 统一融合架构 1、Motivation Our approach is rooted in the prior knowledge that natural imaging responses are equivariant to certain transformations 我们的方法根植于自然成像响应对于某些变换的等变性…

vscode python pip : 无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

在vscode中控制台运行python文件出现&#xff1a;无法将"pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。 使用vscode开发python&#xff0c;需要安装python开发扩展&#xff1a; 本文已经安装&#xff0c;我们需要找的是python安装所在目录&#xff0c;本文…

大气的wordpress官网主题

海外就医wordpress主题 出国看病、海外就医是越来越多中产家庭的选择&#xff0c;此wordpress主题适合做相关业务的公司官网。 https://www.jianzhanpress.com/?p5220 通用多用途wordpress模板 中国红WordPress模板&#xff0c;适合服务行业企业建站的通用多用途wordpress模…

2024高考-优先选专业还是优先选学校

分数限制下&#xff0c;选好专业还是选好学校&#xff1f; 24年高考帷幕落下&#xff0c;一场新的思考与选择悄然来临。对于每一位高考考生&#xff0c;学校和专业都是开启大学新生活的两个前置必选项。但有时候“鱼与熊掌不可兼得”&#xff0c;在分数受限的条件下&#xff0…