Java学习记录day9
类与对象
内部类
成员内部类
在一个类的内部定义的类。
public class Outer {private int a = 10;public void outMethod() {System.out.println("这是外部类中的方法");}// 成员内部类public class Inner{private int b = 10;public void innerMethod() {// 外部类的成员变量和方法a = 20;outMethod(); System.out.println("这是内部类中的方法");}}
}
方法内部类
内部类也可以放在方法内定义,但是注意,方法内部类只能在该类所在的方法的内实例化且不能使用方法的非final局部变量。jdk1.8后取消了在局部内部类中使用的变量必须显示的使用final修饰,编译器默认为这个变量加上final
public class App {public static void main(String[] args) {// TODO Auto-generated method stubOuter outer = new Outer();outer.test();}
}public class Outer {private int a = 10;public void show() {System.out.println("这是外部类中方法");} public void test() {// 局部内部类class Inner {String name;public void innerMethod() {// 外部类的变量a = 30;name = "张三";System.out.println("这个局部内部类中的方法");}}// 在方法中创建局部内部类的对象Inner inner = new Inner();inner.innerMethod();}
}
静态内部类
在一个类内部定义一个静态内部类:即该内部类可以像其他静态成员一样,没有外部类对象时也能够访问他。
class Outer{static class Inner{System.out.println("这个静态内部类中");}
}
class Test{public static void main(String[] args){Outer.Inner n = new Outer.Inner();}
}
匿名内部类
匿名内部类就是没有名字的内部类,有三种:
1.继承式的匿名内部类
class Outer{public void printl(){Eat eat = new Eat(){public void eat(){System.out.println("继承式匿名内部类");}};eat.eat();}
}
public abstract Eat{public abstract void eat();
}
public class Test {public static void main(String[] args) {// TODO Auto-generated method stubOuter outer = new Outer();outer.printl();}
}
2.接口式的匿名内部类
//将继承式中的抽象类改为接口类即可
3.参数式的匿名内部类
class Outer{public void printl(Eat eat){eat.eat();}
}
public nterface Eat{public void eat();
}
public class Test {public static void main(String[] args) {// TODO Auto-generated method stubOuter outer = new Outer();outer.printl(new Eat(){public void eat(){System.out.println("参数式匿名内部类");}});}
}
综合使用:
//接口
public interface Usb {public void connected();
}
//定义usb设备
public class Computer {public void connect(Usb usb) {System.out.println("电脑连接usb外设");usb.connected();}
}
//匿名内部类
public class Test {public static void main(String[] args) {// TODO Auto-generated method stubComputer computer = new Computer();computer.connect(new Usb() { @Overridepublic void connected() {// TODO Auto-generated method stubSystem.out.println("连接打印机");}}); computer.connect(new Usb() { @Overridepublic void connected() {// TODO Auto-generated method stubSystem.out.println("连接鼠标");}}); Usb usb = new Usb() { @Overridepublic void connected() {// TODO Auto-generated method stub}};computer.connect(usb);}
}
使用原则:
- 不能有构造方法,只能有一个实例;
- 不能定义任何静态成员,静态方法;
- 不能是public、protectde、private、static;
- 一定在new的后面,用其隐含实现一个接口或实现一个类;
- 匿名内部类为局部的,所以局部内部类的所有限制对其都生效。
相关文章:
Java学习记录day9
类与对象 内部类 成员内部类 在一个类的内部定义的类。 public class Outer {private int a 10;public void outMethod() {System.out.println("这是外部类中的方法");}// 成员内部类public class Inner{private int b 10;public void innerMethod() {// 外部类…...
ActiveReports.NET 17.0 Crack by Xacker
一个完整的报告解决方案,用于在您的业务应用程序中设计、定制、发布和查看报告。 ActiveReports.NET 通过直观的 Visual Studio 集成报表设计器和丰富的控件帮助您提供精美的报表。ActiveReports 提供基于代码的跨平台报告、易于使用的设计器和灵活的 API。适用于桌…...
【计算机网络】传输层TCP协议
文章目录认识TCP协议TCP协议的格式字段的含义序号与确认号六个标志位窗口大小确认应答(ACK)机制超时重传机制连接管理机制三次握手四次挥手滑动窗口流量控制拥塞控制延迟应答捎带应答面向字节流粘包问题TCP异常情况总结认识TCP协议 传输控制协议 (TCP,T…...
Mysql5.7安装【Windows版】
文章目录一、下载二、添加到环境变量三、添加配置文件my.ini四、安装Mysql 修改密码一、下载 下载地址 滑倒最下面有一个MySQL Community Server 选择要下载的版本 二、添加到环境变量 下载好了之后开始解压 把bin目录添加到环境变量 可以点击进入bin目录,直接复…...
分布式一致性算法Raft原理图释
什么是分布式一致性算法Raft 分布式一致性算法Raft:指在分布式场景下实现集群数据同步的解决方案 掌握了这个算法,就可以较容易地处理绝大部分场景的容错和数据一致性需求 Raft三大角色 跟随者(Follower):普通群众…...
网络安全-字典生成-crunch
网络安全-字典生成-crunch crunch工具,在kali已经集成好了 2是代表最小字符长度 4是最大字符长度 生成了一个2M的文件 还有我们来查看这个密码本 从abcd26个英文字母的2位到4位的组合,他全部排列了一次 还可以自定义数字,特殊字符…...
闪光桐人の实习日记
2023年2月13日 1,认识了职场礼仪,学习了职场礼仪的重要性 尊重->心情愉悦->建立信任与好感->合作机遇的敲门砖 2,学习了职场礼仪中的邮件礼仪 模板管理中设置自己的名片 部门写到三级部,如果部门名太长要换一行 发送…...
PostgreSQL 常见配置参数
max_wal_size : 两个检查点(checkpoint)之间,WAL可增长的最大大小,即:自动WAL checkpoint允许WAL增长的最大值。该值缺省是1GB。如果提高该参数值会提升性能,但也是会消耗更多空间、同时会延长崩溃恢复所需…...
JAVA 常用类型之String结构
String在java中我们是用来操作字符串的,但它的底层结构确是一个char[]数组,通过数组的方式将每个字符进行保存。 使用时:String str"ABCD",内部存value确是:value[A,B,C,D]; 如下图: 参考String源…...
二三层网络设备封装与解封装原理
1、寻址转发(寻址指的是寻找IP地址) 路由表放在一个公共的地方,比如主控板上,由主控板 的CPU运行路由协议,计算路由,生成和维护路由表。 转发表与路由表: 转发表是根据路由表生成的。路由表中…...
9、MyBatis框架——使用注解开发实现数据库增删改查操作、一级缓存、二级缓存、MyBatis实现分页
目录 一、使用注解开发实现数据库增删改查操作 1、搭建项目 2、使用注解开发操作数据库 二、一级缓存 1、一级缓存失效的情况 三、二级缓存 1、手动开启二级缓存cacheEnabled 2、二级缓存机制 四、MyBatis实现分页 1、配置环境 2、startPage()开启分页 3、PageInfo…...
C++STL剖析(六)—— set和multiset的概念和使用
文章目录🌟 前言🍑 树型结构和哈希结构🍑 键值对1. set的介绍和使用🍑 set的模板参数列表🍑 set的构造🍑 set的使用🍅 insert🍅 find🍅 erase🍅 swap…...
SpringColud第四讲 Nacos的Windows安装方式和Linux的安装方式
在Nacos的GitHub页面,提供有下载链接,可以下载编译好的Nacos服务端或者源代码: 目录 1.Windows安装Nacos 1.1.下载 1.2.解压 1.3.修改相关配置: 1.4.启动: 1.5.登录: 2.Linux的安装方式Nacos 2.1.…...
微服务项目【网关服务限流熔断降级分布式事务】
网关服务限流熔断降级 第1步:启动sentinel-dashboard控制台和Nacos注册中心服务 第2步:在网关服务中引入sentinel依赖 <!-- sentinel --> <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-…...
【情人节用Compose给女神写个爱心动画APP】
情人节用Compose给女神写个爱心动画APP前言涉及知识点实现思路实现过程绘制爱心创建动画效果Preview预览效果完整源码彩蛋前言 前一阵子看电视里的学霸用代码写了个炫酷的爱心,网上有很多js和python的源码,复制粘贴就能拥有,但是Android的好…...
GUI swing和awt
GUI(Graphical User Interface,简称 GUI,图形用户界面)是指采用图形方式显示的计算机操作用户界面,与早期计算机使用的命令行界面相比,图形界面对于用户来说在视觉上更易于接受。Java GUI主要有两个核心库&…...
速通Spring
尚硅谷2023最新版Spring6课程_bilibili 1 Spring 【强制】Spring是什么? 1) Spring是一款主流的Java EE轻量级开源框架。 轻量级:体积很小,且不需要依赖于其他组件。 2) 狭义的Spring。 Spring Framework。 3) 广义的Spring。 以Spring F…...
【C++】C++入门
一、 C关键字(C98) C有63个关键字(C语言有32个),如下: asmdoifreturntrycontinueautodoubleinlineshorttypedefforbooldynamic_castintsignedtypeidpublicbreakelselongsizeoftypenamethrowcaseenummutabl…...
Linux网络技术学习(五)—— 网络设备初始化(I)
文章目录什么时候进行的设备初始化?设备注册和初始化NIC(网卡 Network Interface Card)初始化的基本目标设备与内核之间的交互硬件中断中断类型传送节流方式为了改善效率中断共享IRQ处理函数映射的组织irqaction结构体存储方式什么时候进行的…...
[技术选型] ClickHouse和StarRocks的介绍
文章目录1.ClickHouse介绍2.StarRocks介绍1.ClickHouse介绍 ClickHouse是面向联机分析处理(OLAP)的开源分析引擎。最初由俄罗斯第一搜索引擎Yandex开发,于2016年开源,开发语言为C。由于其优良的查询性能,PB级的数据规…...
机器人伦理工程化:从道德困境到可解释决策系统的技术实现
1. 项目概述:当机器人需要做出道德抉择十年前,当我在实验室里调试一台协作机器人的碰撞检测算法时,一个从未预想过的问题出现了:在一条狭窄的通道里,机器人的移动路径上同时出现了一位匆忙的工程师和一个价值百万的实验…...
我花三天实测了DeepSeek V4,发现它根本不是来跟GPT-4o打架的
2026年4月24号,DeepSeek V4发布。 同一天,GPT-5.5也发布了。 这不是巧合,这是宣战。 但测了三天之后,我发现一个反直觉的结论,DeepSeek V4的真正对手根本不是GPT-4o,也不是Claude 3.5。 它要干掉的…...
OpenClacky:AI Agent技能加密与商业分发平台实战指南
1. 项目概述:从开源共享到知识变现的桥梁在AI Agent(智能体)生态蓬勃发展的今天,我们看到了一个有趣的现象:无数开发者贡献了海量的“技能”(Skills),让像OpenClaw这样的平台功能日益…...
鸣潮帧率解锁终极指南:用WaveTools轻松突破120FPS限制
鸣潮帧率解锁终极指南:用WaveTools轻松突破120FPS限制 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 还在为鸣潮游戏中被锁定的60FPS帧率而烦恼吗?想让你的高刷新率显示器发挥真正…...
珠海市高新技术企业资质认定流程及时间
珠海市暂未发布2026年高企申报通知,往年高新技术企业认定工作通常于每年5月至9月分批开展,目前非申报窗口期,建议您提前准备以备下一轮申报。根据往年(如2025年)的受理安排,申报主要通过线上平台进行&#…...
DeepFlow:基于eBPF与Wasm的零代码全栈可观测性平台实战解析
1. 项目概述:从零代码到全栈可观测,DeepFlow 如何重塑云原生与AI应用的监控体验 如果你正在管理一个由微服务、容器和AI模型构成的复杂云原生环境,那么“可观测性”这个词对你来说,可能既熟悉又头疼。熟悉的是,你知道没…...
小熊猫Dev-C++:零配置C/C++开发环境的终极指南
小熊猫Dev-C:零配置C/C开发环境的终极指南 【免费下载链接】Dev-CPP A greatly improved Dev-Cpp 项目地址: https://gitcode.com/gh_mirrors/dev/Dev-CPP 小熊猫Dev-C(Red Panda Dev-C)是一款专为C/C开发者设计的现代化集成开发环境&…...
原生TypeScript待办清单:纯前端架构、观察者模式与拖拽排序实践
1. 项目概述:一个由AI辅助构思的现代化待办清单最近在整理个人项目时,我重新审视了一个之前用TypeScript写的待办清单应用。这个项目的初衷很简单:我需要一个极简、快速、完全由我掌控的待办工具,它不需要登录,数据就存…...
利用示波器直方图功能低成本测量信号抖动的方法与实践
1. 项目概述:用直方图低成本测量抖动在嵌入式系统、高速数字接口乃至电机控制的设计与调试中,信号抖动(Jitter)的测量和分析是一个绕不开的坎。无论是为了确保通信链路的误码率,还是为了验证时钟信号的纯净度ÿ…...
Cortex-R52内存管理与实时性优化技术解析
1. Cortex-R52内存管理架构解析Cortex-R52作为Armv8-R架构的旗舰级实时处理器,其内存管理系统针对高可靠性场景进行了深度优化。与传统MMU不同,R52采用了增强型MPU(Memory Protection Unit)设计,通过16-24个可编程保护…...
