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

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

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

【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…

Spring Cloud Netflix微服务组件-Hystrix

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

MySQL 的执行原理(一)

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

基于Android个人理财家庭收支系统uniAPP+vue -hbuiderx-微信小程序vj9n8

摘 要 个人理财APP设计的目的是为用户提供对活动信息和提醒信息管理等方面的平台。 与PC端应用程序相比&#xff0c;个人理财的设计旨在为用户提供一个个人理财信息的管理。用户可以通过APP及时收入信息和支出信息&#xff0c;并对提醒消息进行查看等。 个人理财APP是在Androi…

吴恩达《机器学习》9-4-9-6:实现注意:展开参数、梯度检验、随机初始化

一、实现注意:展开参数 在上一个视频中&#xff0c;讨论了使用反向传播算法计算代价函数的导数。在本视频中&#xff0c;将简要介绍一个实现细节&#xff0c;即如何将参数从矩阵展开为向量。这样做是为了在高级最优化步骤中更方便地使用这些参数。 二、梯度检验 在神经网络中…

【2021集创赛】IEEE杯一等奖:一种28GHz高能效Outphasing PA设计

本作品参与极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动。 团队介绍 参赛单位&#xff1a;电子科技大学 队伍名称&#xff1a;PA调得队 指导老师&#xff1a;王政 参赛队员&#xff1a;倪梦虎、杨茂旋、张振翼 总决赛奖项&#xff1a;一等奖 1.项…

Golang基础-面向对象篇

文章目录 struct结构体类的表示与封装类的继承多态的基本要素与实现interface空接口反射变量的内置pairreflect包解析Struct TagStruct Tag在json中的应用 struct结构体 在Go语言中&#xff0c;可以使用type 关键字来创建自定义类型&#xff0c;这对于提高代码的可读性和可维护…

掌握这个技巧,你也能成为酒店管理高手!

随着科技的迅猛发展&#xff0c;监控技术在各个领域得到了广泛应用。然而&#xff0c;传统的监控系统在面对水浸等突发事件时&#xff0c;往往无法提供有效的预警和保护。 水浸监控系统通过实时监测水位变化&#xff0c;及时发出警报&#xff0c;以帮助用户采取紧急措施&#x…

EANet:用于医学图像分割的迭代边缘注意力网络

EANet: Iterative edge attention network for medical image segmentation EANet&#xff1a;用于医学图像分割的迭代边缘注意力网络背景贡献实验方法Dynamic scale-aware context module&#xff08;动态规模感知上下文模块&#xff09;Edge attention preservation module&a…