Java入门篇 之 内部类

本篇碎碎念:本篇没有碎碎念,想分享一段话:

你不笨,你只是需要时间,耐心就是智慧,不见得快就好,如果方向都不对,如果心术不正,如果德不配位,快就是对自己天分的一种浪费,不要急躁,慢慢来就很快。

-----董宇辉

今日份励志文案:  To best is yet to come 未来可期

少年乘风,必会展翅翱翔!!!

目录

 内部类

下面的图片表示的是静态内部类 

下面的图片是实例内部类 

 完整的举例代码

匿名内部类 

String类 


 内部类

可以将一个类的定义放在另一个类的定义内部,这就是内部类

内部类是一种非常有用的特性,因为它允许你把一些逻辑相关的类组织在一起,并控制位于内部的类的可视性,内部类和组合是完全不同的概念

博主认为,内部类可能看起来会比较奇怪(仅限个人想法)

创建内部类

创建内部类的方式就是把类的定义置于外围类的里面:

class OuterClass {public int date1 = 1;private int date2 = 2;public static int date3 = 3;//被static修饰的类就是静态内部类//static class InnerClass//没有被static修饰的叫做实例内部类或分非静态内部类class InnerClass {public int date4 = 4;private int date5 = 5;//常量是在编译的时候确定的//final常量//实例内部类中可以定义一个静态成员变量//但是这个变量必须是常量public static final int date6 = 6;}
}

下面的图片表示的是静态内部类 

 在输出System.out.println(date1)中报错,正确的写法下面也已经给出

在外部类中可以直接定义,但是在外部类之外就不可以,需要把外部类名加上

public void func() {//如果定义了一个方法,在方法里可以直接实例化静态内部类的对象InnerClass innerClass = new InnerClass();innerClass.test();}

下面的图片是实例内部类 

//常量是在编译的时候确定的//final常量//实例内部类中可以定义一个静态成员变量//但是这个变量必须是常量public static final int date6 = 6;

 用final修饰,这是规定!!!

 完整的举例代码


//静态内部类代码
//外部类
class OuterClass {public int date1 = 1;private int date2 = 2;public static int date3 = 3;//被static修饰的类就是静态内部类//没有被static修饰的叫做实例内部类或分非静态内部类static class InnerClass {//优先在自己的地盘找,找到就访问自己的public int date1 = 11111;public int date4 = 4;private int date5 = 5;//常量是在编译的时候确定的//final常量//实例内部类中可以定义一个静态成员变量//但是这个变量必须是常量public static final int date6 = 6;public void test() {//date是属于外部类对象的成员,得对外部类的引用访问date1OuterClass date = new OuterClass();System.out.println(date1);System.out.println(this.date1);System.out.println(this.date1);System.out.println(date.date1);System.out.println(date.date2);System.out.println(date4);System.out.println(date5);System.out.println(date6);}}public void func() {//如果定义了一个方法,在方法里可以直接实例化静态内部类的对象InnerClass innerClass = new InnerClass();innerClass.test();}}
public class  demo9 {public static void main(String[] args) {OuterClass out = new OuterClass();out.func();//以下两种写法一样//第一张写法看着比较怪,就是通过外部类引用去调用的InnerClass//OuterClass.InnerClass a=out.new InnerClass();//OuterClass.InnerClass b=new OuterClass().new InnerClass();// a.test();//b.test();//如果在外部类之外就不可以直接实现了/* OuterClass.InnerClass innerClass = new OuterClass.InnerClass();innerClass.test();System.out.println("----我是分界线-----");OuterClass innerClass1=new OuterClass();innerClass1.func();
*/}
}

打印结果! 

匿名内部类 

interface InterFaceA{//定义接口public void func();
}
class TestA implements InterFaceA{@Overridepublic void func() {System.out.println("重写的func");}
}
public class demo11 {public void func(){System.out.println("func");}public static void main(String[] args){TestA testA=new TestA();System.out.println("==========");//接口引用,引用这个东西,{}里面的就是匿名内部类InterFaceA a =new InterFaceA(){@Overridepublic void func() {System.out.println("阿巴阿巴");}};a.func();testA.func();}public static void main1(String[] args){demo11 demo=new demo11();new demo11();//匿名对象,这个对象没有名字demo.func();//只实例化了一个demo对象demo.func();new demo11().func();//实例化了两个demo11对象new demo11().func();//如果说,以后的场景是只使用一次对象,那么就使用内部对象}
}


如果有解释的不对或者不清晰,如果可以从评论区指出,我一定会加以修改,万分感谢

希望对你们有所帮助

 

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

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

相关文章

【数值计算方法】矩阵特征值与特征向量的计算(一):Jacobi 旋转法及其Python实现

文章目录 一、Jacobi 旋转法1. 基本思想2. 计算过程演示3. 注意事项 二、Python实现迭代过程(调试) 矩阵的特征值(eigenvalue)和特征向量(eigenvector)在很多应用中都具有重要的数学和物理意义。Jacobi 旋转…

软件工程理论与实践 (吕云翔) 第十二章 软件测试概述课后习题及其答案解析

第十二章 软件测试概述 1.判断题 (1)软件测试是对软件规格说明、软件设计和编码的最全面也是最后的审查。() 解析:软件测试是一个独立的活动,旨在评估软件的质量和发现潜在的问题,而不仅仅是对规格说明、…

六、流量监管、流量整形

流量监管、流量整形 流量监管、流量整形1.1.定义1.2.简单流分类应用场景举例1.3.简单流分类的配置1.4.复杂流分类1.5.复杂流分类在产品中的实现 ————————————————— 流量监管、流量整形 当报文的发送速率大于接收速率,或者下游设备的接口速率小于…

使用Python合并pdf文件

import PyPDF2 # 创建一个空的 PDF 文档对象 def pdf_merge(path_a,path_b,path_save):merged_pdf PyPDF2.PdfMerger()# 打开第一个 PDF 文件,读取其内容并追加到新创建的 PDF 文档对象中with open(path_a, rb) as file1:merged_pdf.append(file1)# 打开第二个 PDF…

GitHub 2023报告-开源和AI的现状

GitHub 2023报告-开源和AI的现状 深入探讨人工智能如何与开源互动,以及未来几年可能出现的趋势。 背景介绍 2023年,开源已成为全球软件开发的标准。无论是大公司还是小团队,都广泛使用开源技术进行项目开发。此外,随着机器学习和…

Docker部署FLASK Unicorn并配置Nginx

1. 安装相关依赖 flask3.0.0 pymysql1.1.0 #我自己需要的 flask_cors4.0.0 gunicorn21.2.0 gevent23.9.12. 配置Gunicorn 新建gunicorn.conf.py bind 0.0.0.0:5418 # 绑定的IP地址和端口 workers 8 # 同时执行的进程数,推荐为当前CPU个数*21 worker_class&qu…

【Java】java | CacheManager | redisCacheManager

一、说明 1、查询增加缓存,使用Cacheable注解 2、项目中已经用到了ehcache,现在需求是两个都用 二、备份配置 1、redisConfig增加代码 Bean("redisCacheManage")Primarypublic CacheManager redisCacheManager(RedisConnectionFactory fact…

项目集成的关键过程总结

项目集成是确保项目各部分协调一致,共同实现项目目标的过程。以下是项目集成的关键过程: 制定集成计划 制定集成计划是项目集成的第一步。该计划应明确集成的目标、范围、时间表、资源分配和风险管理策略。在制定集成计划时,需要考虑项目干…

CKD TransBTS:用于脑肿瘤分割的具有模态相关交叉注意的临床知识驱动混合转换器

CKD-TransBTS: Clinical Knowledge-Driven Hybrid Transformer With Modality-Correlated Cross-Attention for Brain Tumor Segmentation CKD TransBTS:用于脑肿瘤分割的具有模态相关交叉注意的临床知识驱动混合转换器背景贡献实验方法how radiologists diagnose b…

【19年扬大真题】已知a数组int a[ ]={1,2,3,4,5,6,7,8,9,10},编写程序,求a数组中偶数的个数和偶数的平均值

【18年扬大真题】 已知a数组int a[ ]{1,2,3,4,5,6,7,8,9,10}&#xff0c;编写程序&#xff0c;求a数组中偶数的个数和偶数的平均值 int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int os 0;//偶数个数int sum 0;//偶数和float ave 0;//偶数平均值for (int i 0;i <…

关于2023年11月25日PMI认证考试准考信下载及考场规定等事项通知

各位考生&#xff1a;为保证参加2023年11月25日PMI项目管理资格认证考试的每位考生都能顺利进入考场参加考试&#xff0c;请完整阅读本通知内容。 一、关于准考信下载为确保您顺利进入考场参加11月份考试&#xff0c;请及时登录本网站个人系统下载并打印准考信&#xff0c;准考…

Google codelab WebGPU入门教程源码<6> - 使用计算着色器实现计算元胞自动机之生命游戏模拟过程(源码)

对应的教程文章: https://codelabs.developers.google.com/your-first-webgpu-app?hlzh-cn#7 对应的源码执行效果: 对应的教程源码: 此处源码和教程本身提供的部分代码可能存在一点差异。点击画面&#xff0c;切换效果。 class Color4 {r: number;g: number;b: number;a…

论文阅读:“基于特征检测与深度特征描述的点云粗对齐算法”

文章目录 摘要简介相关工作粗对齐传统的粗对齐算法基于深度学习的粗对齐算法 特征检测及描述符构建 本文算法ISS 特征检测RANSAC 算法3DMatch 算法 实验结果参考文献 摘要 点云对齐是点云数据处理的重要步骤之一&#xff0c;粗对齐则是其中的难点。近年来&#xff0c;基于深度…

【机器学习Python实战】线性回归

&#x1f680;个人主页&#xff1a;为梦而生~ 关注我一起学习吧&#xff01; &#x1f4a1;专栏&#xff1a;机器学习python实战 欢迎订阅&#xff01;后面的内容会越来越有意思~ ⭐内容说明&#xff1a;本专栏主要针对机器学习专栏的基础内容进行python的实现&#xff0c;部分…

C++ Qt 学习(十):Qt 其他技巧

1. 带参数启动外部进程 QProcess 用于启动外部进程int QProcess::execute(const QString &program, const QStringList &arguments);QObject *parent; ... QString program "./path/to/Qt/examples/widgets/analogclock"; QStringList arguments; argument…

当前系统并无桌面环境,或无显示器,无法显示远程桌面,您需要自行安装X11桌面环境,或者使用终端文件功能

ToDesk远程遇到的问题如上图&#xff0c;换向日葵直接黑屏&#xff1b; 问题原因 截止发文时间&#xff0c;Todesk只支持X11协议&#xff0c;没有适配最新的Wayland协议&#xff0c;所以我们需要把窗口系统调整为X11才可以。 解决方法 修改配置文件&#xff0c;关闭wayland su…

Vellum|SOP —— Vellum Constraints

目录 约束类型 Distance Along Edges&#xff08;distance&#xff09; Bend Across Triangles&#xff08;bend&#xff09; Cloth&#xff08;distance、bend&#xff09; Hair&#xff08;stretchshear、bendtwist&#xff09; String&#xff08;distance、angle&…

生成指定位数强Lucas校验伪素数-Arnault1995构造法

Arnault在1995年的论文《Constructing Carmichael Numbers which are Strong Pseudoprimes to Several Bases》提出了一种用于构造强Lucas校验伪素数的方法&#xff0c;本文将对其方法做具体的实现分析。 文章目录 1.Lucas素数测试1.1 Lucas序列1.2 Lucas定理1.3 Lucas素数测试…

Spring Cloud Netflix微服务组件-Hystrix

目录 Hystrix的主要功能 传统容错手段 超时机制 应用容错三板斧 超时机制 舱壁隔离 熔断降级 侵入式Command用法 改进版一&#xff1a;ribbon与hystrix组合 改进版二&#xff1a;feign与hystrix组合 Hystrix三态转换图 源码分析 流程图 原理流程图 核心实现流程…

MySQL 的执行原理(一)

5.1 单表访问之索引合并 我们前边说过 MySQL 在一般情况下执行一个查询时最多只会用到单个二级 索引&#xff0c;但存在有特殊情况&#xff0c;在这些特殊情况下也可能在一个查询中使用到多个二 级索引&#xff0c;MySQL 中这种使用到多个索引来完成一次查询的执行方法称之为&…