Java内部类(匿名内部类)

article/2025/10/11 23:39:43

Java内部类(匿名内部类)

  • 一、内部类
    • 二、静态内部类
      • 三、成员内部类
        • 四、局部内部类(了解即可)
          • 五、匿名内部类(重要)

一、内部类

1、概述

  • 内部类就是一个定义在一个类里面的类,里面的类可以理解为(寄生),外部类可以理解成(宿主)。

public class People{
//内部类
public class start{
}
}

2、内部类的使用场景、作用

  • 当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么这个内部的完整结构可以选择使用内部类来设计。
  • 内部类结构通常可以方便访问外部类的成员,包括私有的成员
  • 内部类提供了更好的封装性,内部类本身就可以用private protected等修饰,封装性可以做更多控制。

3、内部类的分类

  • 静态内部类
  • 成员内部类(非静态内部类)
  • 局部内部类
  • 匿名内部类

二、静态内部类

1、什么是静态内部类?

  • 有static修饰,属于外部类本身。
  • 它的特点和使用与普通类是完全一样的,类有的成分它都有,只是位置在别人里面而已。

public class Outer{
//静态内部类
public static class Inner{
}
}

2、静态内部类创建对象的格式:

格式:外部类名.内部类名 对象名 = new 外部类.内部类构造器
范例: Outer.Inner in = new Outer.Inner();

3、静态内部类的访问拓展

  • 静态内部类中是否可以直接访问外部类的静态成员?
    可以,外部类的静态成员只有一份,可以被共享访问。

  • 静态内部类中是否可以直接访问外部类的实例成员?
    不可以,外部类的实例成员必须要用外部类对象访问。

4、静态内部类的使用场景、特点、访问总结

  • 如果一个类中包含了一个完整的成分,如汽车中的发动机类。
  • 特点、使用与普通类是一样的,类有的成分它都有,只是位置在别人里面而已
  • 可以直接访问外部类的静态成员,不可以直接访问外部类的实例成员
  • 注意:开发中实际上用的还是比较少。

三、成员内部类

1、什么是成员内部类?

  • 无 static 修饰,属于外部类的对象
  • JDK16之前,成员内部类中不能定义静态成员,JDK 16开始也可以定义静态成员了。

public class Outer{
//成员内部类
public class Inner{
}
}

2、成员内部类创建对象的格式

格式:外部类名.内部类名 对象名 = new 外部类构造器.new 内部类构造器()
范例:Outer.Inner in = new Outer().new.Inner()

3、成员内部类的访问拓展:

  • 成员内部类中是否可以直接访问外部类的静态成员?
    可以,外部类的静态成员只有一份,可以被共享访问。
  • 成员内部类的实例方法是否可以直接访问外部类的实例方法?
    可以,因为必须现有外部类对象,才能有成员内部类对象,所以可以直接访问外部类对象的实例成员。

4、成员内部类是什么样的、有什么特点?

  • 无static 修饰,属于外部类对象
  • 可以直接访问外部类的静态成员,实例方法中可以直接访问外部类的实例成员。

5.案例
请添加图片描述
请添加图片描述

四、局部内部类(了解即可)

  • 局部内部类放在方法、代码块、构造器等执行体中
  • 局部内部类的类文件名为:外部类$N内部类.class
五、匿名内部类(重要)

1、匿名内部类

  • 本质上是一个没有名字的局部内部类,定义在方法中、代码块中、等。
  • 作用:方便创建子类对象,最终目的是为了简化代码编写。

2、格式

new 类|抽象类名|或者接口名(){
重写方法;
}

范例:

Employee a = new Employee(){
public void work(){
}
}

3、特点总结

  • 匿名内部类是一个没有名字的内部类。
  • 匿名内部类写出来就会产生一个匿名内部类的对象。
  • 匿名内部类的对象类型相当于是当前new的那个的类型的子类型

4、匿名内部类在开发中的使用形式了解

  • 示例1

请添加图片描述

/**目标:掌握匿名内部类的使用形式*/
public class Test {public static void main(String[] args) {//使用匿名内部类替代学生类,创建的类型是new的那个类的子类Swimming s = new Swimming() {@Overridepublic void Swim() {System.out.println("学生游的很快");}};go(s);}/**方法:学生、老师、运动员可以一起游泳*/public static void go(Swimming s){System.out.println("开始游泳了~~");s.Swim();System.out.println("结束游泳了~~");}
}
//创建学生类
/*class Student implements Swimming{@Overridepublic void Swim() {System.out.println("学生游的很快");}
}*///定义一个接口规范游泳
interface Swimming{void Swim();
}

使用总结:匿名内部类可以作为方法的实际参数进行传输。

  • 示例2

请添加图片描述


http://chatgpt.dhexx.cn/article/5yvaqZf5.shtml

相关文章

Java 内部类的四种实现方式

Java 内部类的四种实现方式 前言 今天的话我将为大家介绍Java的四种内部类,他们分别是普通内部类,静态内部类,局部内部类,匿名内部类。 提示:以下是本篇文章正文内容,下面案例可供参考 一、内部类是什么&…

Java内部类

Java内部类 内部类成员内部类局部内部类匿名内部类静态内部类常规面试案例内部类实例化对象重名变量的引用 内部类 是什么? 字面意思,在类的内部编写的类就叫内部类! 为了方便区分、学习、理解我们一般将内部类分为以下几种! 内部…

java内部类赋值_详解 Java 内部类

内部类在 Java 里面算是非常常见的一个功能了,在日常开发中我们肯定多多少少都用过,这里总结一下关于 Java 中内部类的相关知识点和一些使用内部类时需要注意的点。 从种类上说,内部类可以分为四类:普通内部类、静态内部类、匿名内部类、局部内部类。我们来一个个看: 普通…

java new 一个内部类_java内部类

java内部类的几种类型:成员内部类,静态内部类,方法内部类,匿名内部类。 成员内部类:成员内部类是类内部的非静态类。成员内部类不能定义静态方法和变量(final修饰的除外)。这是因为成员内部类是非静态的,类初始化的时候先初始化静态成员,如果允许成员内部类定义静态变量…

java中的内部类

java中的内部类主要分为两类四种: 第一类:定义在外部类局部位置上,分为局部内部类( 有 类名)、匿名内部类(没有类名)。 第二类:定义在外部类的成员位置上,分为成员内部类(没有static修饰)、静态内部类(使用static修饰…

java内部类最全详解

1、成员内部类 内部类与外部类的关系 a.成员内部类的创建需要依赖于外部类对象-(成员方法必须通过对象调用),在没有外部类实例之前无法创建成员内部类对象 b.内部类与外部类相对独立,不是is a 的关系(发动机-汽车&am…

Java内部类详解(含:成员内部类、局部内部类、匿名内部类、静态内部类)

内部类是什么? 字面意思,在类的内部编写的类就叫内部类!即一个类的内部又完整的嵌套了另一个类结构,被嵌套的类称为内部类(inner class),嵌套其他类的类称为外部类(outer class)。 内部类是类的第五大成员→【提示:类的五大成员…

分享15款很棒的 JavaScript 开发工具javascript

在开发中,借助得力的工具可以事半功倍。今天,这篇文章向大家分享最新收集的15款非常有用的 javascript 开发工具。 testswarm: continious & distributed js testing testswarm是mozilla实验室推出的一个开源项目,它旨在为开发者提供在多个浏览器版本上快速轻松测试自己j…

27 个面向开发人员的最佳 Vue.js 开发工具

英文 | https://javascript.plainenglish.io/best-27-vuejs-development-tools-for-developers-bd972bb5f573 01、BootstrapVue 地址:https://bootstrap-vue.org/ 一个用于 Vue.js 构建引导接口的开源库。 02、Vuex 地址:https://vuex.vuejs.org/ Vue.js…

15 款非常有用的 JavaScript 开发工具

开发者有个趁手的工具将事半功倍。今天这篇文章分享给大家最新的15款非常有用的JavaScript 开发工具。 列表如下: TestSwarm: Continious & Distributed JS Testing TestSwarm提供分布式的JavaScript持续集成测试。最初它的创造者John Resig只是将它作为…

03【WebStorm开发工具】

上一篇:02【HTML快速入门】 下一篇:04【】 目录:【HTML5系列教程】 文章目录 三、WebStorm开发工具3.1 WebStorm简介3.2 WebStorm安装3.3 WebStorm基本使用3.3.1 创建项目3.3.2 调整字体大小3.3.3 代码自动补全3.3.4 WebStorm常用快捷键 三…

web开发者工具 js

作为Web开发人员,我为什么喜欢Google Chrome浏览器 【原文地址:http://www.cnblogs.com/QLeelulu/archive/2011/08/28/2156402.html 】 在Google Chrome浏览器出来之前,我一直使用FireFox,因为FireFox的插件非常丰富,更…

JavaScript 专用开发工具

下载地址:http://soooh.com/3/jsedit.rar javaScript专用编辑工具,免费绿色版,需要.net2.0才能运行。 特色:左侧能列出javascript的函数列表,适合修改很大的js文件。

顶级 Vue.js 开发工具

Vue.js已成为当前最热门的JavaScript前端框架。Vue 是构建有用应用程序和网站的完美选择,无论你是经验丰富的开发人员,正希望切换到 Vue 上,还是刚刚开始工作的新人——选择正确的工具都是非常重要的。在合适的工具帮助下,你就能快…

JavaScript开发工具大全

译文:https://blog.fundebug.com/2017/06/19/javascript-tool-list/ 原文:https://da-14.com/blog/ultimate-list-javascript-tools \简介 2017年1月,Stack Overflow年度开发者调研一共访问了64000个程序员,发现JavaScript已经连续…

前端(HTML css JS)开发工具及常用插件推荐

前端编程工具有很多,例如Visual Studio Code(简称VS code),hbuilder,sublime text3,notepad,webstorm等等,今天给大家推荐的是VS code VS code是一个完全免费的软件,页面…

十款最新的JavaScript开发工具

JavaScript 自推出后就大受开发者的青睐,基于 JavaScript 的开发工具不计其数,开发者们可以灵活选择,轻松构建应用。本文分享了十款最新的 JavaScript 开发工具,喜欢的话就赶紧 mark! 1. Kreate 这款工具有助于对 jQu…

9个最好用的JavaScript开发工具和代码编辑器

Web设计和开发是现今越来越流行的职业方向之一。工欲善其事,必先利其器,如果你想在这个领域出类拔萃,那么你就必须具备一些优秀的技能,例如能操作不同的平台、IDE和其他各种各样的工具。 谈到平台和IDE,现在已经不是以…

js基础篇-开发工具

一. Javascript的开发工具主要包括浏览器和代码编辑器 浏览器:用于执行,调试js代码。 代码编辑器:用于编写代码。 1. 常见的浏览器 开发商浏览器特点MicrosoftInternet Explorerwindows操作系统的内置浏览器,用户数量较多Micros…

推荐15款很棒的 JavaScript 开发工具

在开发中,借助得力的工具可以事半功倍。今天这篇文章与大家分享最近发现的一些有用的 JavaScript 和 jQuery 的开发工具,库和插件。希望这些工具在你你即将到来的项目中能用得上。 01、TestSwarm: Continious & Distributed JS Testing 地址&#xf…