Java中的成员内部类

news2024/11/23 15:44:16

一、什么是成员内部类

成员内部类就是定义在外部类成员位置(属性/方法的位置)的类。成员内部类就是个成员

二、为什么要有成员内部类

使用场景:除了它的外部类,不会被其他类使用,就可以使用成员内部类。有两种情况:1.不可能有其他类使用该内部类。2.该内部类不能被其他类所使用。

三、特点

成员内部类---访问--->外部类:

  • 成员内部类可以直接访问外部类的所有成员,包括私有的。
  • 成员内部类可以添加任意访问修饰符(public, protected, default, private),因为成员内部类的地位就是一个成员。
  • 成员内部类的作用域就是它的外部类整个类体,因为成员内部类就是个成员。

外部类---访问--->成员内部类:

  • 如果外部类的方法想访问成员内部类,要在外部类的方法中先创建成员内部类的对象,再访问。

外部其他类---访问--->成员内部类:(两种方法,看下面代码即可)

package com.hspedu.innerClass;

public class memberInnerClass {
    public static void main(String[] args) {

        //1.第一种方式:用外部类的实例
        Outer08 outer08 = new Outer08();
        //outer08.new Inner08();相当于把new Inner08()当作是outer08成员
        //这就只是个语法,不用纠结
        Outer08.Inner08 inner08 = outer08.new Inner08();
        inner08.say();
        //2.第二种方式:在外部类中,编写一个方法,可以返回Inner08对象。其实和第一种方式一样,第二种有点画蛇添足的感觉
        Outer08.Inner08 inner08Instance = outer08.getInner08Instance();
        inner08Instance.say();

        outer08.t1();
    }
}

class Outer08{  //外部类
    private int n1 = 10;
    public String name = "张三";

    //1.成员内部类是定义在外部类的成员位置上
    //2.成员内部类可以直接访问外部类的所有成员,包括私有的
    //3.成员内部类可以添加任意访问修饰符(public, protected, default, private),
    // 因为成员内部类的地位就是一个成员。
    public class Inner08{  //成员内部类
        public double sal = 99.9;
        public void say(){
            System.out.println("n1= " + n1 + "name= " + name);
        }
    }

    //该方法返回一个Inner08实例
    public Inner08 getInner08Instance(){
        return new Inner08();
    }

    //写方法
    public void t1(){
        //使用成员内部类
        //创建成员内部类的对象,然后使用相关的方法
        Inner08 inner08 = new Inner08();
        inner08.say();
        System.out.println(inner08.sal);
    }
}

如果外部类和内部类的成员重名时,内部类访问的话,默认遵循就近原则,如果想访问外部类的成员,则可以使用(外部类名.this.成员)去访问:

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

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

相关文章

大数据面试之Spark Core常见题目

大数据面试之Spark Core常见题目 1 Spark任务的划分 1、Application:初始化一个SparkContext即生成一个Application。 2、Job:一个Action算子会生成一个Job,有多个Action算子就有多个Job。 3、Stage:Stage等于宽依赖的个数加1…

特殊符号(一)—反斜杠 ” \ “(旋转光标和倒计时的实现)

特殊符号一.功能1.功能一:续航符2.功能二:转义符二.旋转光标和倒计时一.功能 1.功能一:续航符 顾名思义,就是连续的意思,主要用于换行的时候,看例子 以上是一个简单的判断语句,如果if里面的判断…

Win10十二月更新系统讲了什么?

微软今天凌晨发布了win10系统12月最新的累积更新补丁,根据该公司的公告,更新 KB5021233 将版本号增加到构建 19042.2364 (20H2)、19043.2364 (21H1)、19044.2364 (21H2) 和 19045.23…

01-35-springcloud-zk-eureka-consul-cap-父工程

01-springcloud-入门理论等: 微服务 1、什么是微服务 微服务是一种架构风格一个应用拆分为一组小型服务每个服务运行在自己的进程内,也就是可独立部署和升级服务之间使用轻量级HTTP交互服务围绕业务功能拆分可以由全自动部署机制独立部署去中心化&…

产品外观设计一一素描

在反映产品外观设计时,应根据产品的不同功能选择反映方法,以便更清晰地表达创作者的设计理念。首先,我们应该运用透视图的规律性来构建空间框架结构,将镜头中的许多外观元素有机地结合起来,并根据设计科学地安排镜头中…

Portal数据清理过程说明

Portal门户集成平台作为统一的门户搭建和展现平台,提供综合门户、信息门户、应用门户、数据门户等不同类型门户的建设能力,可以为企业构建门户网站、内部业务中心,同时对企业文档资料进行整合、统一归档,对内部、外部提供资料。通…

基于微信小程序的劳务咨询系统设计与实现-计算机毕业设计

项目介绍 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于劳务咨询服务平台小程序当然也不能排除在外,随着网络技术的不断成熟,带动了劳务咨询服务平台小程序&#xff0…

[附源码]计算机毕业设计第三方游戏零售平台Springboot程序

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: Springboot mybatis MavenVue等等组成,B/S模式…

互联网电商大厂的分布式事务使用案例

事务的原子性、持久性可确保在一个事务内,更新多条数据都成功/失败。在一个系统内部,我们可以使用数据库事务来保证数据一致性。那如果一笔交易,涉及到跨多个系统、多个数据库的时候,用单一的数据库事务就没办法解决了。 在之前大…

Altova MissionKit Enterprise 2023 SP1 Crack

屡获殊荣的 XML、JSON、SQL 和 UML 工具套件 以低于 2 个的价格获得 7 个 XML、JSON SQL 和 UML 工具! Altova MissionKit 是面向信息架构师和应用程序开发人员的企业级 XML、JSON、SQL 和 UML 工具的软件开发套件。MissionKit 包括 Altova XMLSpy、MapForce、Styl…

Python 中的垃圾回收机制总结(1)

1.背景 对于Python来说,一切皆为对象,所有的变量赋值都遵循着对象引用机制。 程序在电脑上运行的时候,需要在内存中开辟出一块空间,用于存放运行时产生的临时变量,一方面,内存的容量是有限的;…

JNPF3.4.5消息模块:多渠道应用,配置灵活多样,满足更多使用场景

自11月15日,JNPF 3.4.5 JAVA版本上线,就受到了众多用户的广泛好评,此次更新为用户带来了不同以往的使用体验。 在本次更新中,所有工作流都可以实现自主配置消息模板的操作,同时包括站内信,也可以实现自主配…

sublime json美化

sublime 的插件 json美化感觉很难用,好多正常的json串都 不能正常解析 ,自己写了一个json解析插件,此插件跟网上教程的json美化插件 不同的是: 只对json的特殊字符进行格式化 { [ ] } : , 这种不是很严格但是正好解决了我的问…

【Redis】Redis 持久化

文章目录概述RDB触发机制如何恢复 rdb 文件?RDB 优点:RDB 缺点:AOFAOF 优点AOF 缺点概述 Redis 是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么服务器一旦进程退出,服务器中的数据库状态也会消失…

【C语言进阶】一文速通面试中的指针相关疑难杂症(内含模拟库函数 qsort 的实现)

目录 🥇前言🥇: 一、指向函数指针数组的指针🤯: 1.书写格式🦚: 2.指向函数指针数组指针示例🦩: 二、回调函数🧐: 1.回调函数的定义&#x1f99…

嵌入式软件工程师技能树——应用编程/网络编程/驱动开发/操作系统/计算机网络

文章目录Linux驱动开发1、Linux内核组成2、用户空间与内核的通讯方式有哪些?3、系统调用read/write流程4、内核态用户态的区别5、bootloader内核 根文件的关系6、BootLoader的作用7、BootLoader两个启动阶段1、汇编实现,完成依赖于CPU体系架构的设置&…

Win10安装Linux虚拟机-安装与使用

Win10安装Linux虚拟机-安装与使用 1、VMware 的下载 VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。 下载地址:https://customerconnect.vmware.com/en/downloads/#all_products 在搜索中…

用 Charles 断点调试 HTTPS 请求,原理解析

现在的网站基本都是 https 的,而 charles 是常用的 http 抓包工具,所以用 charles 调试 https 请求是常见的需求。 今天就分享下如何用 charles 调试 https 请求,如何打断点。 首先安装 charles,点击 start recording&#xff1…

FineReport平台数据分析-图表显示部分系列接口

1. 概述 1.1 应用场景 当图表系列较多时,用户希望可以自己设置哪些系列显示,哪些系列不显示。以决策报表为例,实现效果如下图: 1.2 实现思路 通过FR.Chart.WebUtils.getChart("chartID").getChartWithIndex(chartInde…

静态HTML旅行主题网页作业——青岛民俗7页html+css+javascript+jquery 地方民俗网页设计与实现

👨‍🎓静态网站的编写主要是用 HTML DⅣV CSSJS等来完成页面的排版设计👩‍🎓,一般的网页作业需要融入以下知识点:div布局、浮动定位、高级css、表格、表单及验证、js轮播图、音频视频Fash的应用、uli、下拉…