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.rhkb.cn/news/200379.html

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

相关文章

easyExcel注解详情

前言11个注解字段注解 类注解基础综合示例补充颜色总结 11个注解 ExcelProperty ColumnWith 列宽 ContentFontStyle 文本字体样式 ContentLoopMerge 文本合并 ContentRowHeight 文本行高度 ContentStyle 文本样式 HeadFontStyle 标题字体样式 HeadRowHeight 标题高度 HeadStyle…

8Base集团通过SmokeLoader部署新的Phobos勒索软件变种

最近,8Base集团的威胁行为者通过Phobos勒索软件的变种展开了一系列金融动机的攻击。这一发现来自于思科Talos的研究结果,他们记录了网络犯罪分子活动的增加。 安全研究员Guilherme Venere在周五发表的详尽的两部分分析中表示:“该组织的大多…

excel导入 Easy Excel

依旧是框架感觉有东西,但是确实是模拟不出来,各种零零散散的件太多了 controller层 ApiOperation(value "导入Excel", notes "导入Excel", httpMethod "POST", response ExcelResponseDTO.class)ApiImplicitParams({…

如何有效的禁止Google Chrome自动更新?

禁止Chrome自动更新 1、背景2、操作步骤 1、背景 众所周知,当我们在使用Selenium进行Web自动化操作(如爬虫)时,一般会用到ChromeDriver。然而Driver的更新速度明显跟不上Chrome的自动更新。导致我们在使用Selenium进行一些操作时就…

华为ac+fit无线2层漫游配置案例

ap的管理dhcp在ac上,业务dhcp在汇聚交换机上、并且带2层漫游 R1: interface GigabitEthernet0/0/0 ip address 11.1.1.1 255.255.255.0 ip route-static 12.2.2.0 255.255.255.0 11.1.1.2 ip route-static 192.168.0.0 255.255.0.0 11.1.1.2 lsw1: vlan batch 100…

鸿蒙系统扫盲(二):再谈鸿蒙是不是安卓套壳?

最近小米发布了澎湃OS,vivo发布了蓝OS,好像自从华为回归后,大伙都开始写自己的OS了,小米官方承认是套壳安卓,然后被大家喷了,于是鸿蒙是不是安卓套壳的话题又回到了大众的视野,今天在讨论下这个…

React函数组件状态Hook—useState《进阶-对象数组》

React函数组件状态-state 对象 state state 中可以保存任意类型的 JavaScript 值,包括对象。但是,你不应该直接修改存放在 React state 中的对象。相反,当你想要更新⼀个对象时,你需要创建⼀个新的对象(或者将其拷⻉⼀…

VS+Qt+C++ Yolov8物体识别窗体程序onnx模型

程序示例精选 VSQtC Yolov8物体识别窗体程序onnx模型 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《VSQtC Yolov8物体识别窗体程序onnx模型》编写代码,代码整洁,规…

Spring接入Metric+Graphite+Grafana搭建监控系统

环境搭建 Metric 主要是记录操作记录,把数据传给Graphite,这个只需要引入依赖就可以了 日志收集系统,可以支持很多的监控系统一般在Spring项目中用其收集数据,可以发送到Graphite等监控系统中一般使用Merter和Timer分别记录成功…

多目标应用:基于非支配排序的蜣螂优化算法NSDBO求解微电网多目标优化调度(MATLAB)

一、微网系统运行优化模型 微电网优化模型介绍: 微电网多目标优化调度模型简介_IT猿手的博客-CSDN博客 二、基于非支配排序的蜣螂优化算法NSDBO 基于非支配排序的蜣螂优化算法NSDBO简介: https://blog.csdn.net/weixin46204734/article/details/128…

HTTPS流量抓包分析中出现无法加载key

HTTPS流量抓包分析(TLSv1.2),这篇文章分析的比较透彻,就不班门弄斧了 https://zhuanlan.zhihu.com/p/635420027 写个小问题:RSA密钥对话框加载rsa key文件的时候注意不要在中文目录下,否则会提示:“Enter the passwor…

IDEA自动注解设置(中文版)

IDEA自动注解设置 1、添加类自动注释 文件 - 设置 - 编辑器 - 文件和代码模板 - Include - File Header /** *description:TODO *author: ${USER} *create: ${DATE} ${TIME} */2、添加类方法自动注释 文件 - 设置 - 编辑器 - 实时模版 - …

米哈游大数据云原生实践

云布道师 近年来,容器、微服务、Kubernetes 等各项云原生技术的日渐成熟,越来越多的公司开始选择拥抱云原生,并将企业应用部署运行在云原生之上。随着米哈游业务的高速发展,大数据离线数据存储量和计算任务量增长迅速&#xff0c…

【剑指offer|图解|链表】链表的中间结点 + 链表中倒数第k个结点

🌈个人主页:聆风吟 🔥系列专栏:数据结构、算法模板 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️链表的中间结点二. ⛳️链表中倒数第k个结点📝结语 &#x1f4c…

数据结构及八种常用数据结构简介

data-structure 数据结构是一种存在某种关系的元素的集合。“数据” 是指元素;“结构” 是指元素之间存在的关系,分为 “逻辑结构” 和 “物理结构(又称存储结构)”。 常用的数据结构有 数组(array)、栈&…

C语言童年生活二三事(ZZULIOJ1091:童年生活二三事(多实例测试))

题目描述 Redraiment小时候走路喜欢蹦蹦跳跳,他最喜欢在楼梯上跳来跳去。 但年幼的他一次只能走上一阶或者一下子蹦上两阶。 现在一共有N阶台阶,请你计算一下Redraiment从第0阶到第N阶共有几种走法。 输入:输入包括多组数据。 每组数据包括一…

selenium下载安装对应的chromedriver并执行

文章目录 selenium对应版本chrome驱动下载114以及之前的chrome版本119/120/121的chrome版本 chromedriver安装执行selenium代码 selenium Selenium是广泛使用的模拟浏览器运行的库,它是一个用于Web应用程序测试的工具。 Selenium测试直接运行在浏览器中&#xff0c…

图片降噪软件 Topaz DeNoise AI mac中文版功能

Topaz DeNoise AI for Mac是一款专业的Mac图片降噪软件。如果你有噪点的相片,可以通过AI智能的方式来处理掉噪点,让照片的噪点降到最 低。有了Topaz DeNoise AI mac版处理图片更方便,更简单。 Topaz DeNoise AI mac软件功能 无任何预约即可在…

Linux进程通信——消息队列

概念 消息队列,是消息的链接表,存放在内核中。一个消息队列由一个标识符(即队列ID)来标识。 特点 1.消息队列是面向记录的,其中的消息具有特定的格式以及特定的优先级。(消息队列是结构体) 2.消息队列独立于发送与接…

【数据结构】栈详解

目录 1. 前言2. 栈2.1 栈的概念及结构2.2 如何实现栈2.3 数组栈实现2.3.1 top怎么确定2.3.2 栈顶插入2.3.2.1 栈顶插入分析2.3.2.2 栈顶插入代码实现 2.3.3 栈顶删除2.3.4 判空2.3.4.1 分析2.3.4.2 代码实现 2.3.5 栈的元素个数2.3.6 栈销毁2.3.7 栈访问数据 3. 源代码3.1 Stac…