内部类与Enum

内部类Iner class
    最大特点:可以直接访问私有属性
    分类:
        1 局部内部类            (有类名,外部类局部位置)【局部内部类中变量与方法中局部变量(是final的)重名无法区分】(反射?)
            定义在方法或代码块中                            【可以是抽象类】
            作用域:此方法或代码块
            局部内部类还是类可以被继承,但是final修饰就不行了
            可以访问外部类所有成员,包括私有
            不能添加访问修饰符,地位相对于局部变量,所以可以用final(局部变量也可以用final)
            
            
            内部类访问外部类:直接访问,重名默认就近原则  区分用外部类名称点.this.成员
            外部类访问内部类:创建对象,再访问(必须要在作用域中才能访问)【构造器中也能访问】
            外部其他类:不能访问局部内部类,因为其地位是一个局部变量
            
        2 匿名内部类            (无类名,外部类局部位置)【重点】【用的地方特别多】  【匿名内部类中变量与方法中变量重名无法区分】
            new 类或接口(参数列表){                            【不能是抽象类,因为其逻辑上是要创建对象的,写法也没法是抽象类】
            }
            本质是类,内部类,同时是一个对象(运行类型)
            该类没有名字(其实系统分配了名字,但是与你无瓜)  怎么看:一般命名是 外部类名称$int值  用getClass就能看到
            匿名内部类只能使用一次(类加载一次返回对象就无了),注意是类只能使用一次,但是返回的对象可以不断 点
            
            非抽象类也可以使用其匿名内部类(加一个大括号就完全不一样了)
                jvm创建一个匿名内部类继承了这个非抽象类,不过是用一次,创建一个对象返回 就销毁
            
            匿名内部类只能使用一次,所以其内部不能有构造器/构造方法
                (和父类构造器一样?但其不是父类了,和getClass得到的一样?不行,jvm的我们用不了)
            继承/实现+新写类+创建实例+(一次性销毁)
            
            同 局部内部类
                定义在方法或代码块中
                作用域:此方法或代码块
                可以访问外部类所有成员,包括私有
                不能添加访问修饰符,地位相对于局部变量,所以可以用final(局部变量也可以用final)
            
            内部类访问外部类:直接访问,重名默认就近原则  区分用外部类名称点.this.成员(就是调用此方法的对象)
            外部类访问内部类:不能访问【构造器中也不能访问】
            外部其他类:不能访问局部内部类
            
            匿名内部类最佳实践/用途:将匿名内部类当作 实参 传递 (软编码)(改一下,只会影响当前)
                        (用硬编码:写类实现,改一下就会影响所有)
        
        3 成员内部类            (无static,外部类成员位置)【可以是抽象类】
            可以访问外部类所有成员,包括私有
            可以添加访问修饰符,因为地位就是成员变量
            作用域与其他成员一样
            
            内部类访问外部类:直接访问,重名默认就近原则  区分用外部类名称点.this.成员(就是调用此方法的对象)
            外部类访问内部类:创建对象,再访问(必须要在作用域中才能访问)【构造器中也能访问】
            外部其他类:
                1 new 外部类.内部类() 相对于将内部类看作成员
                2 在外部类中,写一个方法,返回内部类对象 相对于getter方法
                3 new 外部类().new内部类()
            
            
        4 静态内部类            (有static,外部类成员位置)【不能是抽象类】
            可以访问外部类所有static成员,包括私有,但是不能访问非静态
            可以添加访问修饰符,因为地位就是成员变量
            作用域与其他成员一样
            
            内部类访问外部类:直接访问,重名默认就近原则  区分用外部类名称点.成员(不要加this了)(就是调用此方法的对象)
            外部类访问内部类:创建对象,再访问(必须要在作用域中才能访问)【构造器中也能访问】
            外部其他类:
                1 new 外部类.内部类() 注意要满足访问权限
                2 外部类中,写一个方法,返回内部类对象
 

枚举
    特殊类,有 有限个特定的对象
    只读,不修改
    实现
        自定义类实现枚举
            1 构造器私有化
            2 setter方法去掉,可以有getter方法
            3 在类内部创建固定的对象,用public static,这样直接用类名点就可以拿到(对象名要有标识性,枚举对象名通常全部大写)
            4 可以再加上final(底层好像没有作用,类还是要加载的)
            
        enum关键字实现枚举
            1 使用enum替代class
            2 常量对象名(实参列表),有多个用逗号间隔  ; 如果使用无参构造器创建枚举对象,那么实参列表与小括号都可以省略
            3 enum实现枚举,要求常量对象写在最前面
            
            使用关键字,底层是final默认继承Enum类  javap工具证明 
            是隐式继承,因为Java是单继承,所以使用这个关键字就不能再继承其他类了,
                但是是可以实现其他接口的
    
    Enum类
        注意:Enum的toString方法已经重写过了 ,返回的就是常量对象名name
        getName方法 返回是常量对象名,子类不能重写
        ordinal方法 返回当前对象的位置号,默认从0开始
        values方法    返回当前枚举类包含所有对象的 一个数组(源码看不到。隐藏了,反编译能看到)
        valueOf方法 将字符串转换为枚举对象,要求字符串必须是已有的枚举对象名,否则抛异常
        comparaTo    比较2个枚举常量,比较的是位置号,返回2编号相减              
                
                
                

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

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

相关文章

基于社区电商的Redis缓存架构-用户分享内容的分页列表缓存延迟构建以及异步通知缓存重建

分页列表缓存的延迟构建 首先,先来讲一下业务场景,用户会在 APP 中去分享内容,那么假如用户分享的是美食菜谱内容,在用户分享之后,先将这个美食菜谱的内容作为 k-v 进行缓存,但是呢,其实对于用…

交通强国添力量 无人机巡航为何备受期待?

在高速建设交通强国的过程中,交通运输部海事局计划完善“陆海空天”一体化水上交通运输安全保障体系。无人机巡航系统将在提升海事船舶监管和水上搜救能力方面发挥关键作用,以构建更为全面的监管体系。尽管已初步建立了海事监管体系,但仍存在…

大语言模型Prompt设计学习记录:Magic words(魔法词)的作用

文章目录 “扮演”或“成为”类指令:“总结”或“概述”类指令:“比较”或“对比”类指令:“解释”或“定义”类指令:“继续”或“接下来”类指令:“转换”或“改写”类指令: 在大语言模型中,Ma…

可用的镜像 yum 源

目录 ftp.sjtu.edu.cn 镜像 yum 源centos 的镜像 yum 源 mirrors.sohu.comcentos 的镜像 yum 源 mirrors.163.comcentos 的镜像 yum 源 ftp.sjtu.edu.cn 镜像 yum 源 镜像 yum 源地址 : http://ftp.sjtu.edu.cn/centos/ centos 的镜像 yum 源 http://ftp.sjtu.edu…

解密Prompt系列20. LLM Agent之再谈RAG的召回多样性优化

几个月前我们就聊过RAG的经典方案解密Prompt系列14. LLM Agent之搜索应用设计。前几天刚看完openAI在DevDay闭门会议上介绍的RAG相关的经验,有些新的感悟,借此机会再梳理下RAG相关的优化方案。推荐直接看原视频(外网)A Survey of …

jdk8新特性:函数式接口与函数式编程思想,lambda

//函数式接口:有且仅有一个抽象方法的接口(可以有其他类型方法), // 适用于函数式编程--》lamdba表达式 // 语法糖:指更加方便但是底层原理不变的代码语法(for-each为迭代器…

Java实现PDF转word的办法

java实现pdf转word的办法有: 1、pdfbox poi 2、free spire.pdf 3、aspose-pdf free spire.pdf 的效果比aspose-pdf稍差一些,但是 aspose-pdf 是付费的,spire.pdf也有付费版本

github问题解决(持续更新中)

1、ssh: connect to host github.com port 22: Connection refused 从.ssh文件夹中新建文件名为config,内容为: Host github.com Hostname ssh.github.com Port 4432、解决 git 多用户提交切换问题 使用系统命令ssh创建rsa公私秘钥 C:\Users\fyp01&g…

openCv颜色矩

颜色矩(Color Moments)是一种常用的图像特征描述方法,用于表示图像中颜色的分布和统计特征。它是基于图像的颜色直方图而计算得到的。 颜色矩通常包括三个维度:平均值、方差和偏度。具体来说: 平均值(Mean…

zabbix配置snmp trap--使用snmptrapd和Bash接收器(缺zabbix_trap_handler.sh文中自取)--图文教程

1.前言 我的zabbix的版本是5.0版本,5.0的官方文档没有使用bash接收器的示例,6.0的官方文档有使用bash接收器的示例,但是,下载文件的链接失效?! 这里讲解zabbix-server端配置和zabbix web端配置 2.zabbix-…

[oeasy]python0002_终端_CLI_GUI_编程环境_游戏_真实_元宇宙

回忆 上次 了解了 python 语言的特点 历史悠久功能强大深受好评已成趋势 3大主流操作系统 macwindowslinux 我们 选择 linux 作为基础系统 为什么选择 黑乎乎的命令行界面呢?🤔 GUI vs CLI 个人电脑 用图标和菜单组成 图形界面(GUI) Graphic User I…

三十五、Seata的基本架构、部署TC服务、微服务集成Seata

目录 一、基本架构 1、Seata事务中的三个重要角色 2、四种不同的分布式事务解决方案: 二、TC的部署 三、微服务集成Seata 1、引入Seata相关依赖 2、配置yml文件 3、启动服务 一、基本架构 Seata是 2019 年 1 月份蚂蚁金服和阿里巴巴共同开源的分布式事务解决…

STM32-OLED显示屏

*本文采用的OLED显示屏为4针脚IIC显示屏,4针脚分别为GND,VCC,SCL,SDA OLED.C #include "stm32f10x.h" #include "OLED_Font.h"/*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAc…

力扣7.整数反转

题目描述 代码 自己写的像屎山&#xff0c;虽然能通过&#xff0c;但多了很多不必要的代码。 class Solution {public int reverse(int x) {int count 0;int res 0;//用temp2记录x的正负int temp2 x;if(x < 0){x -x;}int temp x;while(temp ! 0){temp temp / 10;cou…

03 数仓平台 Kafka

kafka概述 定义 Kafka 是一个开源的分布式事件流平台&#xff08;Event Streaming Plantform&#xff09;&#xff0c;主要用于大数据实时领域。本质上是一个分布式的基于发布/订阅模式的消息队列&#xff08;Message Queue&#xff09;。 消息队列 在大数据场景中主要采用…

Kubernetes学习笔记-Part.02 Docker版本

目录 Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退 第二章 Docker版本 老旧版本&#xff1a;docker/doc…

无人机管控平台:打破通信限制 助力灾害救援

中国地域广阔&#xff0c;自然灾害频发&#xff0c;时常对通信基础设施造成破坏&#xff0c;传统无人机在紧急救援中受限。为有效解决这一问题&#xff0c;新一代无人机技术与应急通信系统融合形成无人机管控平台&#xff0c;不仅提供了高效的空中监测技术&#xff0c;还配备先…

制作一个RISC-V的操作系统三-编译与链接

文章目录 GCCGCC简介GCC的命令格式gcc -Egcc -cgcc -Sgcc -ggcc -vGCC的主要执行步骤GCC涉及的文件类型针对多个源文件的处理 ELFELF介绍ELF文件格式ELF文件处理相关工具&#xff1a;Binutils&#xff08;binary utility&#xff09;readlelf -hreadelf -S或readelf -SW&#x…

11月推荐阅读的12篇大语言模型相关论文

现在已经是12月了&#xff0c;距离2024年只有一个月了&#xff0c;本文总结了11月的一些比较不错的大语言模型相关论文 System 2 Attention (is something you might need too). https://arxiv.org/abs/2311.11829 一种称为S2A的新注意力方法被开发出来&#xff0c;解决llm…

c语言编程题经典100例——(66~70例)

1,写一个函数&#xff0c;判断一个字符串是否是回文字符串。 下面给出一个用于判断一个字符串是否是回文字符串的demo 函数 #include <stdio.h> #include <string.h> int isPalindrome(char str[]) { int len strlen(str); for (int i 0; i < len / 2;…