java的内部类

news2024/11/28 13:55:56

1.内部类的概念
内部类表示的事物是外部类的一部分,内部类单独出现没有任何意义。如发动机是汽车的一部分。
内部类的访问特点:
(1)内部类可以直接访问外部类的成员,包括私有;
(2)外部类要访问内部类的成员,必须创建对象。
示例:
在这里插入图片描述
二、内部类的分类
分为成员内部类、静态内部类、局部内部类和匿名内部类,前三个能看懂即可(方便看源码),匿名内部类必须掌握。
1.成员内部类
写在成员位置,属于外部类的成员。如上例。成员内部类可以被一些修饰符所修饰,比如:private,默认,protected,public,static等。
补充:private修饰的成员只能在该类中使用(该类的方法使用),无修饰符(default)的成员可以被该类所在包中的类使用,protected修饰的成员可以被该类所在包中的类及其子类使用,public修饰的成员可以被任意类使用。
获取成员内部类对象的两种方法:
(1)在外部类中编写方法,对外提供内部类的对象;
blog.csdnimg.cn/f99ede46369e4ed980b9b4ba8667cbc8.png)
注意:Car.java文件编译之后会生成两个字节码文件,一个是Car.class,一个是Car&Enginee.class
在这里插入图片描述
(2)直接创建格式:外部类名.内部类名 对象名 = 外部类对象.内部类对象;
在这里插入图片描述
在这里插入图片描述
注意:若内部类被private修饰,则上图中的代码报错。

内部类访问外部类的成员变量:
书写格式为:外部类.this.成员变量名
在这里插入图片描述
在这里插入图片描述
也遵循“就近原则”:
在这里插入图片描述
在这里插入图片描述
再例如:
在这里插入图片描述
在这里插入图片描述
2.静态内部类(属于成员内部类的一种)
内部类使用static修饰。
静态内部类只能访问外部类中的静态变量和静态方法,如果想要访问非静态的需要创建对象。
创建静态内部类对象的方式:
外部类名.内部类名 对象名 = new 外部类名.内部类名();
3.局部内部类
将内部类定义在方法里就是局部内部类,类似于方法里的局部变量。外界是无法直接使用,需要在方法内部创建对象并使用。该类可以直接访问外部类的成员,也可以访问方法内的局部变量。
注:静态内部类和局部内部类就不举例子了。
4.匿名内部类(以前的文章里讲过,先看那篇)
匿名内部类本质上是隐藏了名字的内部类。当方法的参数是接口或类时,以接口为例,可以传递这个接口的实现类对象,如果实现类只要使用一次,就可以用匿名内部类简化代码。
在这里插入图片描述
(1)接口的匿名内部类(实现关系)
在这里插入图片描述

(2)抽象类的匿名内部类(继承关系):
在这里插入图片描述
解释:匿名内部类是为了省去写实现接口或继承抽象类的类的步骤
匿名内部类可以写在成员位置,也可以写在局部位置。
(1)写在局部位置(写在类的方法中):
在这里插入图片描述
在这里插入图片描述
还可以写成这样,自己调用自己定义的方法:
在这里插入图片描述

(2)写在成员位置:
在这里插入图片描述
注意:因为main()方法是静态方法所有匿名内部类swimObject也加了static,也可以两者都不加。

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

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

相关文章

11.无监督学习之主成分分析

11.1 降维 降维的两种应用:一是数据压缩;二是可视化数据。 11.1.1 数据压缩 将相关性强的两个特征导致冗余,可以直接去掉其中一个特征,或者将两个特征进行某种转换,得到一个特征。 11.1.2 可视化数据 直接看数据可…

设计模式:提升软件设计质量的利器,适合入门者的指南

目录 导言:设计模式的概念常见的设计模式2.1. 单例模式(Singleton Pattern)2.2. 工厂模式(Factory Pattern)2.3. 观察者模式(Observer Pattern)2.4. 策略模式(Strategy Pattern&…

OpenGL 摄像机

1.简介 OpenGL本身没有摄像机(Camera)的概念,但我们可以通过把场景中的所有物体往相反方向移动的方式来模拟出摄像机,产生一种我们在移动的感觉,而不是场景在移动。 要定义一个摄像机,我们需要它在世界空间中的位置、观察的方向…

Java 实现在顺序表中获取 pos 元素的位置

一、思路 1.顺序表不能是空的 2.pos位置要合法 3.直接返回当前的pos位置的下标 二、图解 返回的要是当前 pos 位置的下标,因为下标是没有负数的,由此就可以得出如果下标是负数的话, 这就是一种不合法的情况。 pos 位置的下标也不会超过顺序…

星空特效,截图不太完美

先上效果&#xff1a; 再上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>星空</title><meta name"viewport" content"widthdevice-width, user-scalable…

【立体视觉(三)】之张正友标定法原理

【立体视觉&#xff08;三&#xff09;】之张正友标定法原理 一、相机标定二、参数求解一&#xff09;闭合解二&#xff09;极大似然解三&#xff09;考虑相机畸变 三、实验流程 此为个人学习笔记&#xff0c;在各处借鉴了不少好图好文&#xff08;参考文献在文末&#xff09;&…

项目中常用的linux命令总结大全

哈喽 大家好啊&#xff0c;相信大家在项目中都会常常部署服务器&#xff0c;就涉及到一些常见的linux命令了 1.命令提示符表示命令输入 ps aux | grep nginx&#xff08;查看nginx进程运行状态&#xff09;whereis nginx 查找哪里有nginxlsof -i:5300 查看端口状态kill -9 xxx进…

攻防世界-Crypto-转轮机加密

1. 题目如下&#xff1a; 1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2: < KPBELNACZDTRXMJQOYHGVSFUWI < 3: < BDMAIZVRNSJUWFHTEQGYXPLOCK < 4: < RPLNDVHGFCUKTEBSXQYIZMJWAO < 5: < IHFRLABEUOTSGJVDKCPMNZQWXY < 6: < AMKGHIWPNYCJBFZDR…

大数据需要学习哪些内容?

大数据技术的体系庞大且复杂&#xff0c;每年都会涌现出大量新的技术&#xff0c;目前大数据行业所涉及到的核心技术主要就是&#xff1a;数据采集、数据存储、数据清洗、数据查询分析和数据可视化。 Python 已成利器 在大数据领域中大放异彩 Python&#xff0c;成为职场人追求…

论文阅读和分析:Binary CorNET Accelerator for HR Estimation From Wrist-PPG

主要贡献&#xff1a; 一种完全二值化网络(bCorNET)拓扑结构及其相应的算法-架构映射和高效实现。对CorNET进行量化后&#xff0c;减少计算量&#xff0c;又能实现减轻运动伪影的效果。 该框架在22个IEEE SPC受试者上的MAE为6.675.49 bpm。该设计采用ST65 nm技术框架&#xff…

04_两种常见的网页反爬措施及应对方法

一、封禁IP地址反爬 1、应对思路: 理解这种反爬方法的含义:当我们用自己电脑的ip地址短时间,高频率访问某个具有此类反爬设置的网站,这种网站就会把我们的ip地址封禁,一般都是封24小时或者其他时间。解决方案:通过代理ip访问,这种方式只不过就是让你有了重新访问网页的…

宝塔面板搭建thinkphp后请求中去除index.php后缀

宝塔面板搭建thinkphp后请求中去除index.php后缀 nginx配置 在宝塔面板网站中绑定thinkphp的public&#xff0c;添加站点 点击站点设置按钮打开项目设置页面 找到配置文件 选项&#xff0c;然后在 22行 后添加一下代码 location / {if (!-f $request_filename) {rewrite …

一学就会----链表的中间节点

文章目录 题目描述思路代码示例在原题上增加难度思路代码示例 题目描述 给定一个头结点为 head 的非空单链表&#xff0c;返回链表的中间结点。 如果有两个中间结点&#xff0c;则返回第二个中间结点。 图片示例&#xff1a; 思路 因为这道题目并没有时间复杂度的规定&#xf…

iOS17beta有哪些Bug?iOS17值得升级吗?iOS17Bug大汇总!

iOS17Beta已上线几天&#xff0c;带来了新增横屏待机、“嘿Siri”去除了“嘿”、联系人海报、NameDrop等新功能。 做为第一个beta版本&#xff0c;避免不了许多Bug的出现。 小编收集了目前体验遇到和网上反馈的所有BUG&#xff0c;还没更新iOS17的小伙伴们可以看看截止目前升级…

C++ 类型转换:类型萃取器进行类型转换和cast类操作符进行转换的区别?

区别 类型萃取器和cast类操作符都可以用于类型转换&#xff0c;但它们的用途和工作方式有所不同。 类型萃取器&#xff0c;如 std::remove_reference<T>、std::remove_const<T>、std::add_pointer<T> 等&#xff0c;主要用于在编译时修改类型&#xff0c;它…

# WGCNA | 不止一个组的WGCNA怎么分析嘞!?~(四)(共识网络分析-第四步-共识模块与性状相关联)

1写在前面 最近稍微没有那么忙了&#xff0c;好好搞一下公众号吧&#xff0c;好久没怎么认真做了。&#x1f637; 有的时候你会发现坏事不一定是坏事&#xff0c;塞翁失马&#xff0c;焉知非福啊&#xff01;~&#x1f643; "我只担心一件事,我怕我配不上自己所受的苦难。…

springcloud-alibaba (06)RocketMQ下载安装和单机启动个人笔记

RocketMQ 01 下载RocketMQ02 安装RocketMQ03 启动RocketMQ1. 内存分配1.1 第一步1.2 第二步1.3 第三步 2. 启动RocketMQ2.1 启动NameServer2.2 启动Broker 04 测试RocketMQ05 关闭RocketMQ 01 下载RocketMQ 下载 RocketMQ 即可以从 Apache 官网下载&#xff0c;也可以从 gitHu…

C#调用C++的动态链接库

C#调用C的动态链接库 问题所在使用VS编辑所需要调用的函数&#xff08;c&#xff09;创建c#项目&#xff0c;调用c动态库 这是一个测试代码。 问题所在 c# 调用c的dll库不能引用 解决办法是 1&#xff1a;在写c代码的时候&#xff0c;把他加入到dll中 2&#xff1a;将c的dll库…

Selenium自动化测试框架工作原理你明白了吗?

一、Selenium是什么&#xff1f; 用官网的一句话来讲&#xff1a;Selenium automates browsers. Thats it&#xff01;简单来讲&#xff0c;Selenium是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中&#xff0c;就像真正的用户在操作浏览器一样。支持的…

零基础学网络安全的心得

我的学习心得&#xff0c;我认为能不能自学成功的要素有两点。 第一点就是自身的问题&#xff0c;虽然想要转行学习安全的人很多&#xff0c;但是非常强烈的想要转行学好的人是小部分。而大部分人只是抱着试试的心态来学习安全&#xff0c;这是完全不可能的。 所以能不能学成并…