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

Java——内部类

1.什么是内部类

在一个类的里面再定义一个类,新定义的这个类就是内部类

举例:在Outer类的里面定义一个Inter类

class Outer{class Inter{}
}

在这里Outer叫外部类,Inter叫内部类


内部类的应用场景

定义一个汽车类:

属性:汽车品牌,型号,价格,发动机的型号和使用年限的等等

这里发动机是一个独立的个体,但是又依附于汽车,单独纯在没有意义

代码示例:

class Car{           //汽车类String carName;int carAge;int carPrice;class Engine{     //发动机String engineName;int engineAge;}
}

注意:

内部类表示的事物是外部类的一部分

内部类单独出现没有任何意义


内部类的访问特点

1.内部类可以直接访问外部类的成员,包括私有

2.外部类要访问内部类的成员,必须创建对象

2.成员内部类

1.成员内部类是写在成员位置的,属于外部类的成员(上述Enging类就是成员内部类)

2.成员内部类可以被一些修饰符所修饰,比如:private,default(默认),protected,public,static(被static修饰的成员内部类叫静态内部类)

3.在成员内部类里面,JDK16之前不能定义静态变量,JDK16以后才可定义静态变量

如何获取成员内部类

1.直接创建

格式:

外部类.内部类.对象名=外部类对象.内部类对象()
Outer.Inner oi=new Outer().new Inner();

2.外部类编写方法,对外提供内部类对象

样例:

class Car{String carName;int carAge;int carPrice;
//private修饰的内部类,main无法访问,也不能使用外部类.出来private class Engine{String engineName;int engineAge;}
//获取内部类的方法public Engine getinstance(){return new Engine();}}
public class T1 {public static void main(String[] args) {
//方法1:创建一个外部类对象,用Object形成多态接收内部类
Car car=new Car();
Object en=car.getinstance();
//方法二,直接使用内部类
Car car1=new Car();System.out.println(car1.getinstance());}
}

成员内部类面试题:

class Outer{int a=10;class Inter{int a=20;public void show(){int a=30;System.out.println();//打印10System.out.println();//打印20System.out.println();//打印30}}
}

当变量名不同使,直接调用即可

当外部类和内部类还有局部的变量名相同时,直接打印会遵循就近原则

想要打印分别打赢就可以按下面这种方式调用

class Outer{int a=10;class Inter{int a=20;public void show(){int a=30;System.out.println(Outer.this.a);//打印10System.out.println(this.a);//打印20System.out.println(a);//打印30}}
}

 

3.静态内部类

1.静态内部类就是被static修饰的成员内部类

2.静态内部类只能访问外部类中的静态变量和静态方法,如果要访问非静态的变量和方法,需要创建对象

3.创建静态内部类对象的格式:

外部类名.内部类名 对象名=new 外部类名.内部类名();
Outer.Inter oi=new Outer.Inter();

4.调用静态内部类中非静态的方法:先创建对象,使用对象调用

5.调用静态内部类中的静态方法:外部类名.内部类名.方法名();

4.局部内部类

1.将内部类定义在方法里面的类就叫做局部内部类,类似与方法中的局部变量

2.外界无法直接使用,需要在方法内部创建对象并使用

3.该类可以直接访问外部类的成员,也可访问方法类的局部变量

5.匿名内部类(重点

匿名内部类本质上就是隐藏了名字的内部类

格式:

new 类名或接口名(){
重写方法;
}举例:
new Inter(){
public void show(){}
}

遵循编译看左边,运行看右边的原则

Swin s=new Swin(){//实现了多态
public void swin(){
sout("重写接口里面swin的方法");
}
};
s.swin();

匿名内部类是一个对象,可以直接点方法调用自己类里面的方法

new Swin(){
public void swin(){
sout("重写接口里面swin的方法");
}
}.swin();

使用场景:

1.当方法的参数是接口或者类时

2.以接口为例,可以传递这个接口的实现类对象

3.如果实现类只要使用一次,就可以使用匿名内部类简化代码

注意:匿名内部类可以写在局部位置也可以写在成员位置

相关文章:

Java——内部类

1.什么是内部类 在一个类的里面再定义一个类,新定义的这个类就是内部类 举例:在Outer类的里面定义一个Inter类 class Outer{class Inter{} } 在这里Outer叫外部类,Inter叫内部类 内部类的应用场景 定义一个汽车类: 属性&#xf…...

不用从头训练,通过知识融合创建强大的统一模型

在自然语言处理(NLP)领域,大型语言模型(LLMs)的开发和训练是一个复杂且成本高昂的过程。数据需求是一个主要问题,因为训练这些模型需要大量的标注数据来保证其准确性和泛化能力;计算资源也是一个…...

僵尸进程、孤儿进程、守护进程

【一】僵尸进程和孤儿进程 【1】引入 我们知道在unix/linux中,正常情况下,子进程是通过父进程创建的,子进程在创建新的进程。 子进程的结束和父进程的运行是一个异步过程,即父进程永远无法预测子进程 到底什么时候结束。 当一个 进程完成它…...

【工程化】CJS 和 ESM

common js require 函数的原理伪代码: function require(path) {if (该模块有缓存) {return 该模块的缓存}function _run(exports, require, module, __filename, __dirname) {// 模块代码}// module.exports 即为模块导出的对象var module { exports: {} };_run…...

记录:mac pro 16-inch,2019安装ubuntu双系统

需要的装备:u盘,扩展坞、有线键鼠、ext4硬盘 目的:编译aosp 11 1、首先是参照如下文章,分配空间,制作启动盘(测试ubuntu20.04不行,ubuntu22.04正常) https://blog.csdn.net/LBSGKD…...

WordPress主题 7B2 PRO 5.4.2 免授权开心版源码

本资源提供给大家学习及参考研究借鉴美工之用,请勿用于商业和非法用途,无任何技术支持! WordPress主题 7B2 PRO 5.4.2 免授权开心版源码 B2 PRO 5.4.2 最新免授权版不再需要改hosts,和正版一样上传安装就可以激活。 直接在Word…...

GPT‑4o普通账户也可以免费用

网址 https://chatgpt.com/ 试了一下,免费的确实显示GPT‑4o的模型,问了一下可以联网,不知道能不能通过插件出图 有兴趣的可以试试...

复制即用!纯htmlcss写的炫酷input输入框

一般我们写css样式都要用样式库,但是嫌麻烦,如果能找到现成的内容复制上去就很香了,下文是笔者觉得好看的纯html&css写的样式,可以直接复制到Vue等内,十分方便。 input组件 1) 下面这个很推荐&#…...

前端 CSS 经典:弧形边框选项卡

1. 效果图 2. 开始 准备一个元素&#xff0c;将元素左上角&#xff0c;右上角设为圆角。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, i…...

前端面试题日常练-day21 【面试题】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末。 AJAX 是什么的缩写&#xff1f; a) Asynchronous JavaScript and XMLb) Asynchronous JavaScript and XHTMLc) Asynchronous Java and XMLd) Asynchronous Java and XHTML使用 AJAX 可以实现以下哪…...

几起 Linux 问题解决分享

&#xff08;首发地址&#xff1a;学习日记 https://www.learndiary.com/2024/05/linux-problems/&#xff09; 朋友们&#xff0c;大家好&#xff01;我是淘宝网学习日记小店专注于Linux服务领域的 learndiary&#xff0c;今天很高兴能与大家分享近期处理的一些Linux故障案例&…...

LeetCode题解:9. 回文数,翻转一半数字,JavaScript,详细注释

原题链接 9. 回文数 解题思路 翻转数字 利用循环&#xff0c;每次将x右移一位将移出的数字存储到reversed的个位中每次存储前&#xff0c;需要将reversed左移一位 判断结果 当原x的长度为偶数&#xff0c;翻转后的结果相等当原x的长度为奇数&#xff0c;reversed一定比翻转后…...

微博:一季度运营利润9.11亿元,经营效率持续提升

5月23日&#xff0c;微博发布2024年第一季度财报。一季度微博总营收3.955亿美元&#xff0c;约合28.44亿元人民币&#xff0c;超华尔街预期。其中&#xff0c;广告营收达到3.39亿美元&#xff0c;约合24.39亿元人民币。一季度调整后运营利润达到1.258亿美元&#xff0c;约合9.1…...

Mysql总结1

Mysql常见日志 &#xff08;1&#xff09;错误日志&#xff1a;记录数据库服务器启动、停止、运行时存在的问题&#xff1b; &#xff08;2&#xff09;慢查询日志&#xff1a;记录查询时间超过long_query_time的sql语句&#xff0c;其中long_query_time可配置&#xff0c;且…...

three.js能实现啥效果?看过来,这里都是它的菜(05)

这是第五期了&#xff0c;本期继续分享three.js可以实现的3D动画案例&#xff0c;捎带讲一下如何将模型导入到three.js中。 如何将模型导入three.js中 three.js可以通过多种方式导入3D模型&#xff0c;以下是其中几种常见的方法&#xff1a; 使用three.js自带的OBJLoader或M…...

innerText和innerHTML的区别

innerHTML和innerText都是元素的属性&#xff0c;通过修改这个元素的属性可以达到修改元素内容的目的。但是二者之间略有不同。具体来说&#xff0c;它们的区别如下&#xff1a; innerHTML可以获取或设置元素内部的HTML内容&#xff0c;包括HTML标签&#xff0c;而innerText则…...

O2OA(翱途)开发平台数据统计如何配置?

O2OA提供的数据管理中心&#xff0c;可以让用户通过配置的形式完成对数据的汇总&#xff0c;统计和数据分组展现&#xff0c;查询和搜索数据形成列表数据展现。也支持用户配置独立的数据表来适应特殊的业务的数据存储需求。本文主要介绍如何在O2OA中开发和配置统计。 一、先决…...

网关过滤器使用及其原理分析

1.网关过滤器介绍 网关过滤器的用途一般是修改请求或响应信息,例如编解码、Token验证、流量复制等 官方文档地址:Spring Cloud Gateway 网关过滤器分为GloablFilter、GatewayFilter及DefaultFilter 过滤器的执行顺序由Order决定,Order值越小,优先级越高,越先执行 1.1…...

jiebaNET中文分词器

最近我接手了一个有趣的需求&#xff0c;需要对用户评价进行分词&#xff0c;进行词频统计和情绪分析&#xff0c;并且根据词频权重制成词云图以供后台数据统计&#xff0c;于是我便引入了jieba分词器,但是我发现网上关于jiebaNET相关文档实在太少了&#xff0c;甚至连配置文件…...

springboot3项目练习详细步骤(第四部分:文件上传、登录优化、多环境开发)

目录 本地文件上传 接口文档 业务实现 登录优化 SpringBoot集成redis 实现令牌主动失效机制 多环境开发 本地文件上传 接口文档 业务实现 创建FileUploadController类并编写请求方法 RestController public class FileUploadController {PostMapping("/upload&…...

React 第五十五节 Router 中 useAsyncError的使用详解

前言 useAsyncError 是 React Router v6.4 引入的一个钩子&#xff0c;用于处理异步操作&#xff08;如数据加载&#xff09;中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误&#xff1a;捕获在 loader 或 action 中发生的异步错误替…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

【JavaSE】绘图与事件入门学习笔记

-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角&#xff0c;以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向&#xff0c;距离坐标原点x个像素;第二个是y坐标&#xff0c;表示当前位置为垂直方向&#xff0c;距离坐标原点y个像素。 坐标体系-像素 …...

R语言速释制剂QBD解决方案之三

本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝

目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为&#xff1a;一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)

macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 &#x1f37a; 最新版brew安装慢到怀疑人生&#xff1f;别怕&#xff0c;教你轻松起飞&#xff01; 最近Homebrew更新至最新版&#xff0c;每次执行 brew 命令时都会自动从官方地址 https://formulae.…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...