成员内部类(内部类) - Java

news2024/11/18 15:21:51

成员内部类

说明:成员内部类是定义在外部类的成员位置,并且没有static修饰。

  1. 可以直接访问外部类的所有成员,包含私有的。【案例a】
  2. 可以添加任意访问修饰符(public、protected、默认、private),因为它的地位就是一个成员。【案例b】
  3. 作用域为整个类体(和外部类的其他成员一样)。
    比如前面案例,在外部类的成员方法中创建成员内部类对象,再调用方法。
  4. 成员内部类 —> 访问 —> 外部类(比如:属性)[访问方式:直接访问]
  5. 外部类 —> 访问 —> 内部类(说明)访问方式:创建对象,再访问。【案例c】
  6. 外部其他类 —> 访问 —> 成员内部类。一共有2种方式。【案例d】
  7. 如果外部类和内部类的成员重名时,内部类访问的话,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问。

【案例a】

public class MemberInnereClass01 {
    public static void main(String[] args) {
        Outer08 outer08 = new Outer08();
        outer08.test();
    }
}

class Outer08 {
    private int n1 = 101;
    private void hi08() {
        System.out.println("Outer08-hi08~");
    }

    //Inner08在Outer08的成员(属性方法)位置
    class Inner08 {
        public void func1() {
            System.out.println("n1 = "+n1);
            hi08();
        }
    }

    //在这里使用了成员内部类。
    public void test() {
        Inner08 inner08 = new Inner08();
        inner08.func1();
    }
}

在这里插入图片描述

【案例b】

在这里插入图片描述

【案例c】

class Outer08 {
    private int n1 = 101;

    //Inner08在Outer08的成员(属性方法)位置
    private class Inner08 {
        private double sal = 0.1;
    }

    //在这里使用了成员内部类。
    public void test() {
        Inner08 inner08 = new Inner08();
        System.out.println(inner08.sal);
    }
}

test方法可以访问 Inner08 中的私有属性。因为 Inner08 的作用域为整个类体(和外部类的其他成员一样)。

【案例d】

方法一

本来创建对象是 new Inner08(); 但是 Inner08类,写在了 Outer08类的内部。
相当于把 new Inner08()当作一个成员看待,看作【对象.属性 OR 对象.方法】
所以是 outTmp.new Inner08()

public class MemberInnereClass01 {
    public static void main(String[] args) {
        Outer08 outer08 = new Outer08();
        outer08.test();

        //外部其他类 ---> 访问 ---> 成员内部类。一共有三种方式。
        //注意 这里的MemberInnereClass01就是外部其他类
        //方法1
        Outer08 outTmp = new Outer08();
        Outer08.Inner08 inner08 = outTmp.new Inner08();
    }
}

class Outer08 {
	class Inner08{}
}
方法2

在外部类中,编写一个方法,可以返回 Inner08对象

 Outer08 outTmp2 = new Outer08();
Outer08.Inner08 inner08_2 = outTmp2.getInner08Instance();
class Outer08 {
	class Inner08{}
	
	public Inner08 getInner08Instance() {
		return new Inner08();
	}
}

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

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

相关文章

数组中的第 K 个最大元素(C++实现)

数组中的第 K 个最大元素 题目思路代码 题目 数组中的第 K 个最大元素 思路 通过使用优先队列(最大堆)来找到数组中第k大的元素。通过弹出最大堆中的前k-1个元素,留下堆中的顶部元素作为结果返回。 代码 class Solution { public:int find…

某东大厂面试js手写题【手写代码附带注释,放心食用,博主亲测】

文章目录 前言js实现push方法js实现订阅发布手写防抖节流手写reduce方法深拷贝es5去重数组多维数组去重排序简单递归实现树形结构输出遍历后言 前言 hello world欢迎来到前端的新世界 😜当前文章系列专栏:前端面试 🐱‍👓博主在前…

摄影网站的技术 SEO:提示和最佳实践

摄影就是要给人留下良好的第一印象。如果你想在竞争中领先,摄影师的SEO是您可以采用的最佳营销方法之一。 我们都曾有过这样的经历:你建立了一个漂亮的作品集网站来吸引更多的业务。网站上线并在社交媒体上推广后,您就可以坐等了。网站访问量…

线程池在Java中的应用实践

摘要:在实际业务场景中,线程池发挥着重要作用。本文将详细解答在高并发、任务执行时间短、并发不高、任务执行时间长以及并发高、业务执行时间长的业务场景下,如何使用线程池进行优化。 一、高并发、任务执行时间短的业务场景 在高并发、任务…

python服装电商系统vue购物商城django-pycharm毕业设计项目推荐

系统面向的使用群体为商家和消费者,商家和消费者所承担的功能各不相同,所对象的权限也各不相同。对于消费者和商家设计的功能如下: 对于消费者设计了五大功能模块: (1) 商品信息:用户可在商品…

【黑马甄选离线数仓day06_核销主题域开发】

1. 核销主题_DWD和DWM层 1.0 ODS层 操作数据存储层: Operate Data Store 核心理念: 几乎和源数据保持一致,粒度相同 注意事项: 同步方式(全量同步,全量覆盖,增量仅新增,增量新增和更新) 内部表 分区表(部分) 指定字符分隔符 orc zlib 第二天的时候已经完成了从mysql以及sq…

蓝蜂虚拟网络工具配置说明

虚拟网络工具配置说明 注意: 1、在使用虚拟网络工具前,需保证EG20网关可以连接到EMCP云平台,并且设备已经绑定在对应的账号下,同时固件版本为v1.6.6以上。如果不是,点击固件版本处的更新,如下图所示。 2…

GitHub----使用记录

一、上传文件到仓库 1、首先新建一个github仓库 然后先记住这一句指令 2、下载git工具 https://git-scm.com/downloads 下载工具安装不用运行 3、使用git工具上传文件并推送 找到你想上传的文件的位置,右击git Bush here git init :初始化这个仓…

【Python 训练营】N_11 模拟进度条

题目 格式化输出进度条,具体格式如下: 分析 需要格式化打印,进度条随时间显示进展,需要用time模块的sleep()函数。 答案 import time # 导入time模块 length 100 # 定义进度长度模块 for i in range(1,length1): # 遍历1&…

Corel产品注册机Corel Products KeyGen 2023 – XFORCE解决会声会影2023试用30天

CorelDRAW注册机2023支持全系列产品_Corel Products KeyGen 2023 X-FORCE v8 CorelDRAW注册机2023支持全系列产品_Corel Products KeyGen 2023 X-FORCE v8,Corel产品注册机(Corel Products KeyGen 2023 – XFORCE),支持Corel旗下所…

TDL CDL信道模型

文章目录 一 TDL二 CDL三 CDL TDL区别 TDL:(Tapped Delay Line,抽头延迟线) CDL:(Clustered Delay Line,集群延迟线) 一 TDL 定义:由一组不同衰落系数和不同时延的抽头组成。全频率范围为:0.5GHz~100GHz&am…

【刷题笔记】分糖果||数组||暴力通过||符合思维方式||多案例分析

分发糖果 文章目录 分发糖果1 题目描述2 题目分析2.1 寻找波峰波谷2.2 从波底往波峰攀爬!2.2 计算糖果 3 代码附录1 1 题目描述 https://leetcode.cn/problems/candy/ n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求&…

怎么判断香港服务器的性能好不好?

随着互联网的不断发展,越来越多的人开始使用香港服务器来搭建自己的网站或者应用。但是,对于初次使用香港服务器的用户来说,往往会遇到一个问题:怎么判断香港服务器的性能好不好? 首先我们需要了解香港服务器的性能主要取决于哪些…

智能优化算法应用:基于蝙蝠算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蝙蝠算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蝙蝠算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蝙蝠算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

iconfont 使用彩色图标

1、下载iconfont到本地 2、全局安装 iconfont-tools npm install -g iconfont-tools 3、在iconfont解压目录下执行命令、一直回车 iconfont-tools 4、文件拷贝 执行完上述命令后会生成iconfont-weapp目录,将iconfont-weapp目录下的iconfont-weapp- icon.css文件…

二叉树之推排序(升序)

目录 1.思路1.1大堆的建立方法1.2排序的方法 2.代码实现以及测试代码 1.思路 如何将一个堆进行排序,并变成升序?首先,如果要完成升序,那我们可以建立一个大堆,因为大堆可以选出一个最大的值放在堆的最上面&#xff0c…

舞蹈店管理系统服务预约会员小程序效果如何

舞蹈的作用很广,也有大量求学者,每个城市也有大小各异的舞蹈品牌店,他们承接商演、也会教学员、宣传拓展生意等,因此近些年来,随着互联网深入及短视频,舞蹈业市场规模也在增加。 而在门店经营中&#xff0…

Go 编程语言详解:用途、特性、与 Python 和 C++ 的比较

什么是Go? Go是一个跨平台、开源的编程语言Go可用于创建高性能应用程序Go是一种快速、静态类型、编译型语言,感觉上像动态类型、解释型语言Go由Robert Griesemer、Rob Pike和Ken Thompson于2007年在Google开发Go的语法类似于C Go用于什么? Web开发&…

QT中的 容器(container)-大全

一、介绍 Qt库提供了一套通用的基于模板的容器类&#xff0c;可以用这些类存储指定类型的项。比如&#xff0c;你需要一个大小可变的QString的数组&#xff0c;则使用QVector<QString>。 这些容器类比STL&#xff08;C标准模板库&#xff09;容器设计得更轻量、更安全并…

快速了解Spring AOP的概念及使用

文章目录 1. AOP概念1.1 什么是AOP&#xff1f;1.2 什么是Spring AOP&#xff1f; 2. Spring AOP的使用2.1 引入Spring AOP依赖2.2 编写AOP程序 3. Spring AOP详解3.1 Spring AOP核心概念1. 切点&#xff08;Pointcut&#xff09;2. 连接点&#xff08;Join Point&#xff09;3…