Java—内部类

在这里插入图片描述


Java—内部类

  • 一、内部类
  • 二、应用特点
  • 三、分类
    • 3.1、普通内部类:直接将一个类的定义放在另外一个类的类体中
    • 3.2、静态内部类
    • 3.3、局部内部类

一、内部类

一个类的定义出现在另外一个类,那么这个出现的类就叫内部类(Inner)。
内部类所在的类叫做外部类(Outer)。
在这里插入图片描述

二、应用特点

一个类对应提供的内容仅仅是为某一个类单独服务
可以直接访问外部类的私有的成员变量

三、分类

3.1、普通内部类:直接将一个类的定义放在另外一个类的类体中

1、定义格式
在这里插入图片描述
2、调用方式
在这里插入图片描述
3、特点:
普通内部类和普通类一样
普通内部类权限修饰符都可以用
创建调用普通内部类,需要外部类实例对象来创建内部类对象
final可修饰内部类

4、案例

内部类访问外部类的成员变量:外部类类名.this.id
内部类访问内部类的成员变量:this.id
直接访问id:形参中传递的id

package com.company.innerp;public class NormalInnerDemo {//成员变量private int id = 1;//定义普通内部类public class NormalInner{
//    private class NormalInner{//内部类的成员变量private String name = "inner";private int id =2;public NormalInner(String name){this.name=name;System.out.println("普通内部类NormalInner的有参构造方法");}public NormalInner(){System.out.println("普通内部类NormalInner的无参构造方法");}public void show(){//可以直接访问外部类的私有化的成员变量System.out.println("外部类NormalInnerDemo变量id"+id);System.out.println("普通内部类NormalInner变量name"+name);}public void show1(int id){//可以直接访问外部类的私有化的成员变量System.out.println("变量id:"+id);  //形参内容  就近原则System.out.println("外部类id:"+ NormalInnerDemo.this.id);  //外部类的id  类名.this.idSystem.out.println("内部类id:"+ this.id);         //内部类的id    this.id}}
}
package com.company.innerp;public class innerTest {public static void main(String[] args) {//1、外部类实例化NormalInnerDemo outer = new NormalInnerDemo();//2、普通内部类实例化NormalInnerDemo.NormalInner inner = outer.new NormalInner();//3、调用show方法inner.show();inner.show1(8);}
}

3.2、静态内部类

使用static修饰的内部类,属于类层级。

1、定义格式
在这里插入图片描述

2、调用方式
在这里插入图片描述
3、特点
静态内部类:不能直接访问外部类的非静态成员。
静态内部类:可以直接创建对象
如果静态内部类访问外部类中与本类同名的成员变量或者方法时,需要使用类名.的方式访问。

案例:静态内部类:不能直接访问外部类的非静态成员。
在这里插入图片描述

package com.company.innerp;public class StaticInnerDemo {//成员变量private int id = 1;private static int sid = 2;//定义静态内部类public static class StaticInner{//内部类的成员变量private String name = "inner";
//        private int id =2;private static int sid =4;public StaticInner(){this.name=name;System.out.println("静态内部类StaticInner的构造方法");}public void show(){//可以直接访问外部类的私有化的成员变量System.out.println("外部类StaticInner的静态变量sid"+ sid);System.out.println("内部类StaticInner的成员变量sid"+ sid);//            System.out.println("外部类StaticInner的成员变量id"+ id);}public void show1(int sid){System.out.println("-----------------------------------------------------");System.out.println("形参变量sid:"+sid);   //局部优先//内部类的成员idSystem.out.println("静态内部类StaticInner的静态成员变量sid值是:"+StaticInner.sid);System.out.println("静态外部类StaticInnerDemo的静态成员变量sid值是:"+StaticInnerDemo.sid);}}public static void main(String[] args) {StaticInnerDemo.StaticInner s=new StaticInnerDemo.StaticInner();s.show();s.show1(8);}
}

执行结果:

静态内部类StaticInner的构造方法
外部类StaticInner的静态变量sid4
内部类StaticInner的成员变量sid4
-----------------------------------------------------
形参变量sid8
静态内部类StaticInner的静态成员变量sid值是:4
静态外部类StaticInnerDemo的静态成员变量sid值是:2Process finished with exit code 0

3.3、局部内部类

直接将一个类的定义放在方法体的内部
1、定义格式
在这里插入图片描述
2、调用
在这里插入图片描述
3、特点:
局部内部类只能在方法的内部可以使用
局部内部类可以在方法体内直接创建对应对象

package com.company.innerp;public class JubuInnerDemo {private int aid = 2;public void show(){//定义局部内部类 局部内部类:只在当前方法体的内部使用 不能用访问修饰符class AreaInner{private int id = 1;public AreaInner() {System.out.println("局部内部类AreaInner的构造方法");}public void testArea(){System.out.println("局部内部类AreaInner的id的值:"+id);System.out.println("AreaInnerDemo的aid的值:"+aid);}}//声明局部内部类的引用指向局部内部类的对象AreaInner areaInner = new AreaInner();areaInner.testArea();}
}

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

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

相关文章

在线软件包管理

1.APT工作原理 APT(Advanced Packaging Tool)是Debian系列Linux操作系统中广泛使用的包管理工具,它为用户提供了从软件仓库搜索、安装、升级和卸载软件包的功能。其工作原理具体分析如下: 1. **集中式软件仓库机制**&#xff1a…

Linux之Nginx

1、Nginx 1.1、什么是Nginx Nginx最初由Igor Sysoev开发,最早在2004年公开发布。它被设计为一个轻量级、高性能的服务器,能够处理大量并发连接而不消耗过多的系统资源。Nginx的架构采用了事件驱动的方式,能够高效地处理请求。它的模块化设计使…

python-情报加密副本

【问题描述】某情报机构采用公用电话传递数据,数据是5位的整数,在传递过程中是加密的。加密规则如下:每位数字都加上8,然后用和除以7的余数代替该数字,再将第1位和第5位交换,第2位和第4位交换。请编写程序,…

Denoising Diffusion Probabilistic Models 全过程概述 + 论文总结

标题:Denoising(🌟去噪)Diffusion Probabilistic Models(扩散概率模型) 论文(NeurIPS会议 CCF A 类):Denoising Diffusion Probabilistic Models 源码:hojona…

卡特兰数-

是组合数学中一种常出现于各种计数问题中的数列。 一、简单介绍 卡特兰数是一个数列,其前几项为(从第零项开始) : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 47763…

澳大利亚.德国-新闻媒体投放通稿:发表新闻稿需要留意哪些地方-大舍传媒

概述 当我们想要发布新闻稿时,了解目标媒体的特点和要求是至关重要的。本文将介绍澳大利亚和德国的新闻媒体,以及在撰写和投放新闻稿时需要注意的要点,以帮助您更好地与目标受众沟通。 澳大利亚媒体 澳大利亚是一个多元化的国家&#xff0…

Android ListView鼠标模式下ListView回滚问题

概述 在 Android 应用程序中,ListView 是一种常用的控件,用于显示可滚动列表数据。然而,当在鼠标操作模式下使用 ListView 时,可能会遇到一个问题:点击列表项时,列表会回滚到指定位置,这可能会导…

【ML Olympiad】预测地震破坏——根据建筑物位置和施工情况预测地震对建筑物造成的破坏程度

文章目录 Overview 概述Goal 目标Evaluation 评估标准 Dataset Description 数据集说明Dataset Source 数据集来源Dataset Fields 数据集字段 Data Analysis and Visualization 数据分析与可视化Correlation 相关性Hierarchial Clustering 分层聚类Adversarial Validation 对抗…

OFDM通信中的部分内容

纠错编码:在无线通信过程中由于传输过程存在噪声等各种非理想因素,在接收端接收到的信息往往相对于发射信息存在误码,通过纠错编码方式可以对少数非连续的误码进行判断和纠正。举个简单的例子,发射端可能发射的信息为00,01,10,11,…

二叉搜索树的后序遍历序列

二叉搜索树的后序遍历序列 背景题目描述题解 背景 每次重复刷到这题都没有思路,看答案也总需要理解一会,但是下次又忘了,哈哈哈,因此记录一下思路. 题目描述 牛客地址: https://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd 描述 输入一个整数数…

网络应用层之(1)DHCPv6协议

网络应用层之(1)DHCPv6协议 Author: Once Day Date: 2024年5月26日 一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦… 漫漫长路,有人对你微笑过嘛… 全系列文章可参考专栏: 通信网络技术_Once-Day的博客-C…

如何从头搭建一个自己的java库并上传到maven官方仓库

创建代码 在代码库根目录执行maven命令,用于快速生成一个基础的Maven项目 mvn archetype:generate \-DgroupIdcom.mycompany \-DartifactIdmy-maven-project \-Dversion1.0.0 \-DarchetypeArtifactIdmaven-archetype-quickstart \-DinteractiveModefalse 这个命令…

分享一个用AI降本的思路,不懂代码也能上手

如何用AI解决实际的业务问题? 生财圈友我来利用ChatGPT做算法建模,每年为公司省下6万元。 今天他将分享通过ChatGPT进行数据分析的思路,从最开始定义问题到最终数据论证。 上手的实操过程门槛并不高,但可以实现把官方电商平台的…

c++ 虚函数常见问题

1 虚函数,虚表基础 虚函数,虚表基础 2 虚函数表保存在哪里 ? 虚函数表在编译的时候确定。在 linux 下,保存在只读数据段的重定位段,这个段的名字是 .data.rel.ro。 如下代码,编译之后,使用 readelf -t a…

仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码

码名称:仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码 开发环境:帝国cms7.5 空间支持:phpmysql 仿《Q极速体育》NBACBA体育直播吧足球直播综合体育直播源码自动采集 - 我爱模板网源码名称:仿《Q极速体育》NBACBA体育直…

网络攻防概述(基础概念)

文章目录 APTAPT概念APT攻击过程 网络空间与网络空间安全网络空间(Cyberspace)网络空间安全(Cyberspace Security) 网络安全属性机密性(Confidentiality或Security)完整性(Integrity)可用性(Availability)不可否认性(Non-repudiation&#xf…

如何学习计算机网络(超详细,方法论)

分享一下学习计算机网络的方法论 首先是看视频: 这里我推荐中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版》课程 课程目标_哔哩哔哩_bilibili 教材采用神书《计算机网络(自顶向下方法)》,授课风格更偏向实…

企业如何正确地利用LLM大模型?

大型语言模型 (LLM) 不值得信任。就是这样。 考虑到它们先进的 AI 能力以及当今强大的基础模型的普遍知识,这似乎是一件令人惊讶的事情。然而,问题的关键在于 LLM 无法解释其输出。你不能信任 LLM 的结果,不是因为它不准确,而是因…

无畏并发: Rust Mutex的基本使用

并发是很多编程语言避不开的一块主要内容,主打一个无畏并发的Rust自然也面临这样的挑战。Rust中的Mutex提供了强大的同步原语,确保共享数据的线程安全,这篇文章中,我们会探讨Mutex的使用,从基础的用法到一些高阶内容。…

2024电工杯B题平衡膳食食谱的优化设计及评价原创论文分享

大家好,从昨天肝到现在,终于完成了2024电工杯数学建模B题的完整论文啦。 实在精力有限,具体的讲解大家可以去讲解视频: 给大家看一下目录吧: 目录 摘 要: 10 一、问题重述 14 二.问题分析 …