内部类(下)匿名内部类,静态内部类的使用

news2025/1/19 17:16:28

文章目录

  • 前言
  • 一、匿名内部类
  • 二、静态内部类
  • 三、内部类的继承
  • 总结

前言

        该文将会介绍匿名内部类、静态内部类的使用,补充完毕java中的内部类。补充内容为向上转型为接口、使用this关键字获取引用、内部类的继承。


一、匿名内部类

        定义:没有名称的内部类。

        语法:

return new A(){
    //匿名内部类
    //该匿名内部类的外部类为:A
}

 或者为:

ParentClass obj = new ParentClass(){
    //创建了一个以ParentClass为外部类的匿名内部类
    //实现代码
};

      注:该匿名内部类的外部类为 A。在实例化该外部类时,同时实例化了该匿名内部类。

        实例:

public class Demo3 {
	public OutInterface2 action(){
		//实例化接口OutInterface2
		return new OutInterface2() {
			/*在 return 语句中编写一个返回值为实例化的一个外部类 OutInterface2,
			 *java中最常用的内部类
			 创建了一个匿名内部类,由于该内部类没有名字,所以被称为"匿名"
			 						*/
			private int i =0;
			public int getValue() {
				return i;
            //匿名内部类的成员变量和成员方法
			}
		};	//匿名内部类{}结尾需要一个 ; 符号
	}
}	

         规则1:匿名内部类定义结束后,需要加分号 ; 加以标识,这个分号并不表示内部类的结束,而是代表匿名内部类的创建。

         规则2:匿名内部类的外部类为,return new 语句中的实例化的类。 

         规则3: 匿名内部类没有名字。

二、静态内部类

        定义: 在内部类前添加  static 关键字修饰。

        语法:

class OuterClass {
    // 外部类的成员和方法
     static class StaticInnerClass {
        // 静态内部类的成员和方法
    }
}

         规则1:如果创建静态内部类的对象,不需要其外部类的对象,直接在其中声明 static成员即可。

public class Demo4 {
	
	static class innerClass4{
        //创建了一个静态内部类
	}
	static innerClass4 n = new innerClass4();
    //在外部类中创建了一个静态内部类的对象
}

         规则2:不能从静态内部类的对象中访问非静态外部类的对象。不可以使用外部类的非静态成员。(因为静态区不能调用非静态区)

         规则3:main静态方法可以在静态内部类中使用。与在主方法中使用的main静态方法,实现效果一致。例如,system.out.println 语句输出内容,都会在控制台输出。

public class Demo4 {
	
	static class innerClass4{
        //这里是一个静态内部类
		public static void main(String[] args) {
            //静态方法中使用println
			System.out.println("我是静态内部类");
		}
	}
}

         输出结果:

        问题: 进行程序测试时,如果每一个Java文件中都设置一个主方法,将出现很多额外代码,而程序本身不需要这些主方法,该怎么做呢?

        解决方法:将多个主方法写入几个静态内部类,主要作用是,方便进行调试

三、内部类的继承

        内部类的继承

                语法:class 子类 extends 外部类.内部类 

class OutputInnerClass extends ClassA.ClassB{
    //OutputInnerClass 继承了ClassA的内部类ClassB
  	public OutputInnerClass(ClassA a){
	    a.super();
    }
    //类继承内部类必写的一个构造方法
}

                注:在某个类继承内部类时,必须硬性创建这个子类一个带参数的构造方法,并且该构造方法的参数为需要继承的内部类的外部类的引用,同时在构造方法体中通过该参数,使用 super() 方法。调用了这个外部类,才能继承其中的内部类。

                问题:匿名内部类没有名字,那么其他类该怎么继承该内部类呢?

                解决方法:定义一个实现了某个接口的匿名内部类,通过内部类覆写接口的抽象方法,然后在其他类中继承这个匿名内部类。

                实例:

interface MyInterface {
    void doSomething();
}
 class MyClass {
    MyInterface myInterface = new MyInterface() {
        
        public void doSomething() {
            System.out.println("Doing something in anonymous inner class.");
        }
    };
}
 class MySubClass extends MyClass {
    // 可以使用 myInterface 对象调用 doSomething 方法
}

总结

        本文简单介绍了匿名内部类、静态内部类,以及内部类的继承。补充完整了内部类的使用。如果读者对文章所提到的内容有什么疑问或补充,欢迎在评论区中评论,博主会及时进行反馈的。

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

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

相关文章

redis 淘汰策略和持久化

文章目录 一、淘汰策略1.1 背景1.2 淘汰策略 二、持久化2.1 AOF日志2.1.1 AOF配置2.1.2 AOF策略2.1.3 AOF缺点2.1.4 AOF Rewrite2.1.5 AOF Rewrite配置2.1.6 AOF Rewrite缺点2.1.7 fork进程时的写时复制2.1.8 大key对持久化的影响 2.2 RDB快照2.2.1 RDB配置2.2.2 RDB缺点 2.3 混…

二分查找算法(全网最详细代码演示)

二分查找也称 半查找(Binary Search),它时一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字 有序 排列。 注意:使用二分查找的前提是 该数组是有序的。 在实际开…

web前端常用调试工具

概述 当我们写 webapp 或者 移动端H5网页时,要在手机上调试并不容易。 alert:很早之前的调试办法(已被抛弃) vconsole:是2016年由微信公众平台前端团队推出(目前大量使用) eruda&#xff1a…

解读随机森林的决策树:揭示模型背后的奥秘

一、引言 随机森林[1]是一种强大的机器学习算法,在许多领域都取得了显著的成功。它由多个决策树组成,而决策树则是构建随机森林的基本组件之一。通过深入解析决策树,我们可以更好地理解随机森林模型的工作原理和内在机制。 决策树是一种树状结…

虚拟现实技术(VR)

目录 1.什么是虚拟现实技术 2.虚拟现实技术的由来 3.虚拟现实技术给人类带来的好处 4.虚拟现实技术未来的走向 1.什么是虚拟现实技术 虚拟现实技术(Virtual Reality,简称VR)是一种通过计算机生成的模拟环境,使用户能够身临其境…

【js】经纬度位置获取navigator.geolocation.getCurrentPosition:

文章目录 一、经纬度位置获取navigator.geolocation.getCurrentPosition二、getCurrentPosition()在google chrome上不起作用 一、经纬度位置获取navigator.geolocation.getCurrentPosition 【文档】https://developer.mozilla.org/zh-CN/docs/Web/API/Window/navigator // 获取…

Redis 数据库高可用

Redis 数据库的高可用 一.Redis 数据库的持久化 1.Redis 高可用概念 (1)在web服务器中,高可用是指服务器可以正常访问的时间,衡量的标准是在多长时间内可以提供正常服务(99.9%、99.99%、99.999%等等)。 …

《MySQL 实战 45 讲》课程学习笔记(三)

事务隔离 事务就是要保证一组数据库操作,要么全部成功,要么全部失败。 隔离性与隔离级别 事务特性:ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔离性、持久性)。当数据库上…

Web-1-网站工作流程介绍

我们学习web开发,首先要知道什么是Web? Web: 全球广域网,也称为万维网(www World Wide Web),能够通过浏览器访问的网站 比如我展示的这京东,淘宝唯品会都叫做网站,那么现在大家想一下,你还知道什…

用Ubuntu交叉编译Linux内核源码并部署到树莓派4B上

参考文章 1. 配置交叉编译环境 之前在ubuntu上配置过了,直接跳过 2.获取Linux内核源码 Linux内核源码链接 到链接里面选择自己合适版本的内核源码下载下来,然后传到ubuntu中进行解压 3.Linux内核源码的配置 参考文章 厂家配linux内核源码&#xff…

数据可视化库pyecharts简单入门

文章目录 0. 介绍1. 快速开始1.1 安装1.1.1 pip安装1.1.2 源码安装 1.2 快速上手1.2.1 柱状图1.2.2 链式调用1.2.3 使用options选项配置参数(一切皆options)1.2.4 渲染成图片文件1.2.5 使用主题1.2.6 地图 2. 全局配置项2.1 使用指南2.2 常用全局配置项2…

直呼牛逼!阿里最新 SpringBoot 进阶笔记涵盖了 SpringBoot 所有骚操作

相信从事 Java 开发的朋友都听说过 SSM 框架,老点的甚至经历过 SSH,说起来有点恐怖,比如我就是经历过 SSH 那个时代未流。当然无论是 SSM 还是 SSH 都不是今天的重点,今天要说的是 Spring Boot,一个令人眼前一亮的框架…

Intellij IDEA有什么奇技淫巧?

IDEA全称 IntelliJIDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、创新的GUI设计等方面的功能可以说是超常的。 idea下载…

【大数据趋势】7月30日 汇率,恒指期货的大数据趋势概率分析。

1. 数据源头之一 : 汇率变化 从程序模拟趋势来看,美元在持续弱势状态,周线上正在构建一个新的下跌趋势,而且正在反抽过程中,即将完成,如果没有外部干预,会顺势往下。从月线来看,高点逐步降低&a…

【论文笔记】神经网络压缩调研

神经网络压缩调研 背景现有的深度模型压缩方法NetWork Prunning 网络剪枝设计结构化矩阵知识蒸馏权值共享Parameter Quantization(参数量化)量化和二进制化伪量化Architecture Design(Depth Separable Convolution)分解卷积 背景 …

【Linux】进程轻松入门

目录 一, 冯* 诺依曼体系结构 1,存储结构 ​编辑 二, 操作系统 1,概念 2,设计OS的目的 3,定位 4,如何理解 "管理" 5, 总结 三,进程 1. 概念 那么…

【C语言所有操作符详解2】

目录 条件操作符 逗号表达式 下标引用、函数调用和结构成员 [ ] 下标引用操作符 ( ) 函数调用操作符 访问一个结构的成员 表达式求值 隐式类型转换 隐式类型转换 整型提升 整型提升的意义: 如何进行整型提升呢? 算术转换 操作符的属性 操作符优先级 …

Redis系列一:介绍

介绍 The open source, in-memory data store used by millions of developers as a database, cache, streaming engine, and message broker. 相关资源 Redis 官网:https://redis.io/ 源码地址:https://github.com/redis/redis Redis 在线测试&#…

RS232转ETHERCAT连接ethercat通讯过程描述

我们将为大家介绍一款强大的设备——捷米JM-ECT-RS485/232通讯网关。这是一款自主研发的ETHERCAT从站功能的网关,它能够将ETHERCAT网络和RS485或RS232设备无缝连接。 这款网关在ETHERCAT总线和RS485或RS232总线中均能发挥主站或从站的作用。它的最大特点就是解决了…

企业情报管理系统

软件简介 基于 SpringBoot 的权限管理系统,易读易懂、界面简洁美观。 核心技术采用 Spring、MyBatis、Shiro 没有任何其它重度依赖。直接运行即可。 平台简介 企业情报管理系统,主要包括情报分析、文章情报、报告情报、数据情报、数据管理、AI管理、平…