当前位置: 首页 > news >正文

Day32内部类

内部类

  1. 内部类就是在一个类中定义一个类,(在A类中定义一个B类,B类就被称为内部类)

    格式:public class 类名{ 修饰符 class 类名{} } 如:public class Outer{ public class Inner {} }

    //内部类可以访问外部类的成员,包括私有。 //外部类要访问内部类的成员,必须创建对象。

public class Outer{private int num = 10;public class Inner{public void show(){System.out.pirntln(num);//内部类可以直接访问外部类的成员,包括私有}}public void method(){Inner i = new Inner();//外部类想要访问内部类需要创建对象i.show();}
}
  1. 按照内部类在类中定义的位置不同,可以分为两种:在类的成员位置被称为成员内部类;在类的局部位置(方法位置)被称为局部内部类。

    //成员内部类创建对象格式:外部类名 . 内部类名 对象名 = 外部类对象 . 内部类对象;(Outer.Inner oi = new Outer().new Inner();)

public class Outer{private int num = 10;private class Inner{public void show(){System.out.println(num);}}public void method(){Inner i = new Inner();//在method的方法中创建Inner内部类的对象并调用方法i.show();}
}
​
//测试类
public class InnerDemo{public static void main(String[] args){Outer o = new Outer();//在测试方法中创建外部类对象o.method();         //外部类对象调用method方法间接调用内部类对象和方法}
}

//局部内部类是在方法中定义的类,所以外界无法直接使用,需要在方法内部创建对象并使用该类可以直接访问外部类成员,也可以访问方法内的局部变量。

public class Outer {private int num = 10;public void method(){int num2 = 20;//在方法中定义一个成员变量class Inner{public void show(){System.out.println(num);System.out.println(num2);}}Inner i = new Inner();//在方法中定义对象并调用i.show();}
}
​
//测试类
public class OuterDemo{public static void main(String[] args){Outer o = new Outer();//定义外部类对象o.method();//外部类对象调用方法,间间访问到局部内部类的对象i调用的show方法}
}
  1. 匿名内部类(局部内部类的一种)

    匿名内部类本质是一个继承了该类或者实现了该类接口的子类匿名对象。

    格式:new 类名或者接口名(){ 重写方法; }; 如:new Inter(){ public void show(){} }; //最后分号不要缺少

//定义一个接口
public interface Inter {void show();
}
​
//在外部类中写局部内部类,然后写匿名内部类
public class Outer{public void method(){new Inter(){@Overridepublic void show(){System.out.println("匿名内部类");}};//现在本质是一个对象new Inter(){@Overridepublic void show(){System.out.println("匿名内部类");}}.show();//匿名内部类对象调用show方法,可以多次调用//因为定义的是个接口的实现类对象Inter i = new Inter(){@Overridepublic void show(){System.out.println("匿名内部类");}};i.show();}
}
​
//定义一个测试类
public class OuterDemo{public static void main(String[] args){Outer o = new Outer();o.method();}
}
//创建跳高接口
public interface Jumpping{void jump();
}
​
//接口的操作类,里面有一个方法方法的参数是接口名
public class JumppingOperator{public void method(Jumpping j){j.jump();}
}
​
//测试类
public class JumppingDemo{public static void main(String[] args){//需求:创建接口操作类的对象,调用method方法JumppingOperator jo = new Jumpping Operator();Jumpping j = new Cat();//需要先创建实现类,然后在测试类中创建实现类对象jo.method(j);//调的是接口名,因为接口不能直接引用,因此需要定义一个实现类对象//如果不想创建实现类再定义对象,可以使用匿名内部类(本质是一个对象)jo.method(new Jumpping(){@Overridepublic void jump(){System.out.println("猫可以跳高了");   }});}
}

相关文章:

Day32内部类

内部类 内部类就是在一个类中定义一个类,(在A类中定义一个B类,B类就被称为内部类) 格式:public class 类名{ 修饰符 class 类名{} } 如:public class Outer{ public class Inner {} } //内部类可以访问外部…...

用户画像系列——HBase 在画像标签过期策略中的应用

一、背景 前面系列文章介绍了用户画像的概念、用户画像的标签加工、用户画像的应用。本篇文章主要介绍一些画像的技术细节,让大家更加详细的了解画像数据存储和处理的逻辑 举个现实中的例子: 例子1:因为疫情原因,上线一个平台(…...

时下热门话题:ChatGPT能否取代人类?

时下热门话题:ChatGPT能否取代人类? 2022年11月底,人工智能对话聊天机器人ChatGPT推出,迅速在社交媒体上走红,短短5天,注册用户数就超过100万。2023年1月末,ChatGPT的月活用户已突破1亿&#x…...

每日刷题记录(十七)

目录 第一题:求12...n解题思路:代码实现: 第二题:两两交换链表中的节点解题思路:代码实现: 第三题:只出现一次的数字 II解题思路:代码实现: 第四题:根据字符串…...

开放原子训练营(第三季)RT-Thread Nano学习营一探究竟

前言 不知道从什么时候起,智能设备开始普及到了我们日常生活的方方面面。下班还未到家,热水器就可以调到合适的温度;上班刚进公司,忘关空调也不再是什么烦恼;诸如夜晚的灯光变换,白昼的窗帘适应等更给我们…...

数据库系统概论(二)关系数据库,SQL概述和数据库安全性

作者的话 前言:总结下知识点,自己偶尔看一看。 目录 一、关系模型概述 1.1关系数据结构及形式化定义 1.1.1域(Domain) 1.1.2笛卡尔积(Cartesian Product) 1.1.3关系(Relation) …...

【VM服务管家】VM4.x算子SDK开发_3.1 环境配置类

目录 3.1.1 环境配置:CSharp算子SDK开发环境配置方法3.1.2 算子封装:使用C封装算子SDK的方法3.1.3 异常中断:算子SDK软件运行报错“托管调试助手”中断的解决方法3.1.4 深度学习:GPU运行深度学习算子引发StackOverFlow异常的方法 …...

Java核心书籍1

1.《Java核心技术》是一本深入浅出的Java编程指南,适合初学者和有一定Java编程基础的读者。这本书的主要作者是Cay S. Horstmann和Gary Cornell,他们都是Java领域的知名专家。这本书的最新版本是第10版,其中涵盖了Java SE 9、10和11的新特性&…...

crontab详细用法 定时任务

使用crontab可以在指定时间执行一个shell脚本或者一系列Linux命令 crontab的使用方法 方法1.使用crontab命令 例如添加一个新的或者编辑已有的,使用: crontab -e就可以进入配置文件.此时配置crontab的执行者是当前登入用户,如果当前有用户是root,需要为其他用户配置,可以使用…...

基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局

查看原文>>>基于ArcGIS Pro、Python、USLE、INVEST模型等多技术融合的生态系统服务构建生态安全格局 目录 第一章、生态安全评价理论及方法介绍 第二章、平台基础 第三章、数据获取与清洗 第四章、基于USLE模型的土壤侵蚀评价 第五章、基于风蚀修正模型的防风固…...

开心档之MySQL 创建数据类型

MySQL 数据类型 MySQL 中定义数据字段的类型对你数据库的优化是非常重要的。 MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。 数值类型 MySQL 支持所有标准 SQL 数值数据类型。 这些类型包括严格数值数据类型(INTEGER、S…...

【C++ Primer(第5版) 课后习题题目及答案 第一章】

C Primer5th 课后习题答案 第一章 1.1:查阅你使用的编译器的文档,确定它所使用的文件命名约定。编译并运行main程序。1.2:改写程序,让它返回-1。返回值-1通常被当作程序错误的标识。重新编译并运行你的程序,观察你的系…...

【英语】100个句子记完7000个托福单词

其实主要的7000词其实是在主题归纳里面,不过过一遍100个句子也挺好的,反正也不多。 文章目录 Sentence 01Sentence 02Sentence 03Sentence 04Sentence 05Sentence 06Sentence 07Sentence 08Sentence 09Sentence 10Sentence 11Sentence 12Sentence 13Sent…...

六、CANdelaStudio入门-通信参数编辑

本专栏将由浅入深的展开诊断实际开发与测试的数据库编辑,包含大量实际开发过程中的步骤、使用技巧与少量对Autosar标准的解读。希望能对大家有所帮助,与大家共同成长,早日成为一名车载诊断、通信全栈工程师。 本文介绍CANdelaStudio的通信参数编辑,欢迎各位朋友订阅、评论,…...

【致敬未来的攻城狮计划】— 连续打卡第十三天:FSP固件库开发启动文件详解

系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…...

Java中mybatis是否支持延迟加载?延迟加载的原理是什么?

是的,MyBatis支持延迟加载。延迟加载是指在查询对象时,只加载其基本属性,而将关联对象的数据暂不加载,等到真正需要使用关联对象时再去查询加载其数据的一种技术。 MyBatis通过在映射文件中配置lazyLoadingEnabled属性来开启延迟加…...

真题详解(磁盘)-软件设计(五十八)

真题详解(MTTR)-软件设计(五十七)https://blog.csdn.net/ke1ying/article/details/130354940 1、2021年上半年 解析: 哈希地址 0 1 2 3 4 5 6 7 8 9 10 构建哈希表 第一步:3%11 3 ,放在哈希地址3的位置…...

MATLAB连续时间信号的实现和时域基本运算(八)

1、实验目的: 1)熟悉常用连续时间信号的实现方法; 2)掌握连续时间信号的时域基本运算; 3)掌握实现基本函数及其运算的函数的使用方法; 4)加深对信号基本运算的理解。 2、实验内容&am…...

MongoDB 聚合管道中使用字符串表达式运算符

字符串表达式运算符主要用于实现字符串操作,主要包括了大小写转换、字符串截取、拼接、替换等 一、准备工作 初始化字符串数据 db.strings.insertMany([{ "_id": "1", "comment": " Abc" },{ "_id": "2&…...

用Python分析周杰伦歌曲并进行数据可视化

大家好,今天我们用python分析下周杰伦歌曲。为了尽量完整地呈现从原始数据到可视化的过程,接下来我们会先简单讲解数据的预处理过程,即如何将 JSON 数据转化为Excel 格式,以及如何对周杰伦的歌曲进行分词。 本案例中的歌词数据来…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解(7大核心步骤实战技巧) 一、爬虫完整工作流程 以下是爬虫开发的完整流程,我将结合具体技术点和实战经验展开说明: 1. 目标分析与前期准备 网站技术分析: 使用浏览器开发者工具(F12&…...

2025盘古石杯决赛【手机取证】

前言 第三届盘古石杯国际电子数据取证大赛决赛 最后一题没有解出来,实在找不到,希望有大佬教一下我。 还有就会议时间,我感觉不是图片时间,因为在电脑看到是其他时间用老会议系统开的会。 手机取证 1、分析鸿蒙手机检材&#x…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

招商蛇口 | 执笔CID,启幕低密生活新境

作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...

MySQL:分区的基本使用

目录 一、什么是分区二、有什么作用三、分类四、创建分区五、删除分区 一、什么是分区 MySQL 分区(Partitioning)是一种将单张表的数据逻辑上拆分成多个物理部分的技术。这些物理部分(分区)可以独立存储、管理和优化,…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

Linux 下 DMA 内存映射浅析

序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...