java 面向对象 day3
这里写目录标题
- 1、 内部类
- 1.1 成员内部类 静态内部类
- 1.2 局部内部类
- 1.3 匿名内部类[重点]
- 2、枚举
- 2.1 使用枚举类 设计单例模式
- 2.2 小实例
- 3、泛型
- 3.1 认识泛型
- 3.2 泛型类
- 3.3 泛型接口
- 3.4 泛型方法
- 3.5 注意事项
1、 内部类
内部类 就是定义在一个类中的类
1.1 成员内部类 静态内部类

注意:成员内部类需要先new出外部类才可以实例化内部类,但是静态内部类不需要new外部类。
成员内部类 可以正常访问外部类的各种变量和方法,但是静态内部类只能访问外部类的静态变量和静态方法。
package com.cky.inner;public class iteminner {public static String name="cui";public int age=18;public int money=18;//public class inner {public int age = 20;public inner() {}public void test() {int age = 21;//可以正常访问 外部类的实例变量和静态变量System.out.println(age); //访问局部变量System.out.println(this.age); //访问inner对象的age对象System.out.println(iteminner.this.age); //访问外部对象的age对象System.out.println(name);}}//静态内部类public static class inner1{public void test1(){//System.out.println(money); 错误 静态内部类 不能访问外部类的实例变量System.out.println(name);//正确 可以访问静态变量}}
}
package com.cky.inner;public class Test {public static void main(String[] args) {//inner类属于外部类的一个类 所以需要先new出外部类对象才可以iteminner.inner inner = new iteminner().new inner();iteminner.inner1 inner1 = new iteminner.inner1();//由于是静态内部类 可以不用new 外部对象}
}
1.2 局部内部类
了解即可,局部内部类,就是定义在方法中的一个类。

1.3 匿名内部类[重点]
有些对象,我们并不必要为其专门建立一个类,只需要在用时为其传递即可。
匿名内部类 最主要的运用场景就是 我们可以将其作为参数 传递给函数。
new时: //第一步为其创建一个子类,第二步是为其返回一个子类对象
package com.cky.inner;public class Test {public static void main(String[] args) {//第一步为其创建一个子类,第二步是为其返回一个子类对象Animal cat=new Animal(){@Overridepublic void cry() {System.out.println("猫在哭");}};
// test(cat);//等同于test(new Animal(){@Overridepublic void cry() {System.out.println("猫在哭");}}); //new 就会创建出一个animal的对象test(new Animal(){@Overridepublic void cry() {System.out.println("狗在哭");}});}public static void test(Animal animal){animal.cry();}
}interface Animal {public void cry();
}
结果:
猫在哭
狗在哭
2、枚举
枚举是一种特殊类,枚举的构造器是私有的,不能用于创建实例。
使用枚举类,我们可以限制类的实例对象个数。
写法:
修饰符 enmu 枚举类名称{
名称1,名称2…
其他成员
}
例如:
public enum Day {MONDAY,TUESDAY,WEDNESDAY,// 其他枚举常量...
}
在加载Day类时,MONDAY、TUESDAY、WEDNESDAY等枚举常量就会被创建为Day类的实例。因此,你可以直接通过Day.MONDAY来访问这个实例,而不需要使用new关键字显式创建对象。
2.1 使用枚举类 设计单例模式
public enum Day {MONDAY;
}
这样就设计出来了单例模式,Day不能创建实例,只能有MONDAY一个对象。
2.2 小实例
package com.cky.list;import com.cky.static_demo.A;public class test {public static void main(String[] args) {showdifferent(Sex.GIRL);showdifferent(Sex.BOY);
// showdifferent(1); 错误 我们使用了枚举类型 只能传递给其枚举对象 ,通过这样 我们可以限制传入的对象}public static void showdifferent(Sex sex){switch (sex){case BOY:System.out.println("男");case GIRL:System.out.println("女");}}
}
enum Sex {//第一行就是枚举类可能的对象,其实就是A 是个枚举类 它可能的对象有X,Y,Z三种,//枚举类的 构造方法是私有的 不可能去实例化它BOY,GIRL;
}
3、泛型
3.1 认识泛型
例如:ArrayList 就是一个泛型类
package com.cky.fx;import java.util.ArrayList;public class Test {public static void main(String[] args) {ArrayList a=new ArrayList(); //此时没有定义泛型类型,就可以add任意类型a.add(1);a.add("java");ArrayList<String> a1=new ArrayList<>();
// a1.add(1); 错误 只能添加string类型a1.add("string");ArrayList<Cat> cats=new ArrayList<>();cats.add(new Cat());cats.add(new Cat());run(cats);ArrayList<Dog> dogs=new ArrayList<>();dogs.add(new Dog());dogs.add(new Dog());run(dogs);ArrayList<Animal> animals=new ArrayList<>();animals.add(new Animal());run(animals);}//自己定义泛型方法//比如动物 我们想让所有的动物都参加比赛 此时我们的要求是传入的必须是动物 而不能是其他 我们让T extens Anmial就可以了
// public static <T extends Animal>void run(ArrayList<T> t){
//
// }//这样写 是错误的 虽然 Dog和Cat是 Animal的子类 但是添加上 ArrayList就不同了 只能传入 Animal这一个
// public static void run(ArrayList<Animal> t){
// }//? 号是通配符 在我们使用泛型时可以使用
// extends 表示上限 即任何属于Animal的子类包括其本身均可 但是super表示下限 只有Animal和其父类才可以public static void run(ArrayList<? extends Animal> t){}}//自己定义泛型类class Myarr<T>{public void add(T t){return;}
}class Animal{void run() {}
}
class Cat extends Animal{}
class Dog extends Animal{}
3.2 泛型类
3.3 泛型接口
3.4 泛型方法
3.5 注意事项

相关文章:
java 面向对象 day3
这里写目录标题 1、 内部类1.1 成员内部类 静态内部类1.2 局部内部类1.3 匿名内部类[重点] 2、枚举2.1 使用枚举类 设计单例模式2.2 小实例 3、泛型3.1 认识泛型3.2 泛型类3.3 泛型接口3.4 泛型方法3.5 注意事项 1、 内部类 内部类 就是定义在一个类中的类 1.1 成员内部类 静…...
Flink 大数据 学习详情
参考视频: 尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 核心目标: 数据流上的有状态的计算 具体说明: Apache Flink是一个 框架 和 分布式处理引擎,用于对 无界(eg:kafka) 和…...
[项目设计] 从零实现的高并发内存池(四)
🌈 博客个人主页:Chris在Coding 🎥 本文所属专栏:[高并发内存池] ❤️ 前置学习专栏:[Linux学习] ⏰ 我们仍在旅途 目录 6.内存回收 6.1 ThreadCache回收内存 6.2 CentralCache回收内存 Rele…...
02.URL的基本知识和使用
一.认识 URL 1. 为什么要认识 URL ? 虽然是后端给我的一个地址,但是哪部分标记的是服务器电脑,哪部分标记的是资源呢?所以为了和服务器有效沟通我们要认识一下 2. 什么是 URL ? 统一资源定位符,简称网址ÿ…...
人工智能指数报告2023
人工智能指数报告2023 主要要点第 1 章 研究与开发第 2 章 技术性能第 3 章 人工智能技术伦理第 4 章 经济第 5 章 教育第 6 章 政策与治理第 7 章 多样性第 8 章 舆论 人工智能指数是斯坦福大学以人为本的人工智能研究所(HAI)的一项独立倡议,…...
Android如何对应用进行系统签名
一、使用命令 获取签名文件 从系统源码环境中获取签名相关文件: platform.x509.pem、platform.pk8 、signapk.jar platform.x509.pem、platform.pk8 位于 ../build/target/product/security 目录下。signapk.jar 位于 ../out/host/linux-x86/framework 目录下。 …...
【系统安全加固】Centos 设置禁用密码并打开密钥登录
文章目录 一,概述二,操作步骤1. 服务器端生成密钥2. 在服务器上安装公钥3.下载私钥到本地(重要,否则后面无法登录)4. 修改配置文件,禁用密码并打开密钥登录5. 重启sshd服务6. 配置xshell使用密钥登录 一&am…...
关于我在项目中封装的一些自定义指令
什么是指令 在Vue中提供了一套为数据驱动视图更为方便的操作,这些操作被称为指令系统。我们看到的v-来头的行内属性,都是指令,不同的指令可以完成或者实现不同的功能。 除了核心功能默认内置的指令(v-model和v-show)…...
react经验11:访问循环渲染的子组件内容
前有访问单个子组件的需求,现在进一步需要访问循环渲染中的子组件。 访问单个子组件的成员 实施步骤 子组件//child.tsx export declare type ChildInstance{childMethod:()>void } const Child(props:{value:stringonMounted?:(ref:ChildInstance)>void …...
Java开发工程师面试题(业务功能)
一、订单超时未支付自动关闭的几种实现方式。 定时任务扫描:在订单创建时,为订单创建一个定时任务,并设置一个超时时间。后端服务器会定期检查任务的创建时间是否超过了超时时间。如果是,则将订单设置为关闭状态。这种方案需要后…...
BUUCTF-Misc-百里挑一
题目链接:BUUCTF在线评测 (buuoj.cn) 下载附件打开是一个流量包文件: 全是在传图片时候的流量,先把图片保存出来文件–>导出对象–>HTTP–>保存到一个文件夹 然后使用kali下的exiftool找到了一半flag exiftool *|grep flag 另外一半…...
【力扣刷题练习】42. 接雨水
题目描述: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 题目解答: class Solution {public int trap(int[] height) {int n height.length;int ans 0;if (n < 3)return…...
鸿蒙实战开发:数据交互【RPC连接】
概述 本示例展示了同一设备中前后台的数据交互,用户前台选择相应的商品与数目,后台计算出结果,回传给前台展示。 样例展示 基础信息 RPC连接 介绍 本示例使用[ohos.rpc]相关接口,实现了一个前台选择商品和数目,后台…...
QLC SSD:LDPC纠错算法的优化方案
随着NAND TLC和QLC出现,LDPC也在不断的优化研究,提升纠错能力。小编看到有一篇来自Microchip发布的比较详细的LDPC研究数据,根据自己的理解分析解读给大家,如有错误,请留言指正! 文档中测试LDPC(Low-Density Parity-Check)码是为了评估其在不同配置下对数据错误的有效…...
【Flutter 面试题】main()和runApp()函数在Flutter的作用分别是什么?有什么关系吗?
【Flutter 面试题】main()和runApp()函数在Flutter的作用分别是什么?有什么关系吗? 文章目录 写在前面解答补充说明 写在前面 关于我 ,小雨青年 👉 CSDN博客专家,GitChat专栏作者,阿里云社区专家博主&…...
ChatGPT高效提问——说明提示技巧
ChatGPT高效提问——说明提示技巧 现在,让我们开始体验“说明提示技巧”(IPT, Instructions Prompt Technique)和如何用它生成来自ChatGPT的高质量的文本。说明提示技巧是一个通过向ChatGPT提供需要依据的具体的模型的说明来指导ChatGPT输出…...
从零学算法41
41.给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1: 输入:nums [1,2,0] 输出:3 示例 2: 输入:nums […...
FPGA高端项目:FPGA基于GS2971的SDI视频接收+OSD动态字符叠加,提供1套工程源码和技术支持
目录 1、前言免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案的SDI接收转HDMI输出应用本方案的SDI接收图像缩放应用本方案的SDI接收纯verilog图像缩放纯verilog多路视频拼接应用本方案的SDI接收HLS图像缩放HLS多路视频拼接应用本方案的SDI接收HLS多路视频融合叠加应用…...
UML-类图详解
UML中基本概念说明 UML类图中关系连接线说明 UML类图说明 号表示public、-表示表示private、#表示protected UML类关系详解 泛化(Generalization)关系 简单的讲就是类之间的继承关系。在UML中,泛化关系用空心三角形实线来表示&…...
Python 快速获取PDF文件的页数
有时在处理或打印一个PDF文档之前,你可能需要先知道该文档包含多少页。虽然我们可以使用Adobe Acrobat这样的工具来查看页数,但对于程序员来说,编写脚本来完成这项工作会更加高效。本文就介绍一个使用Python快速获取PDF文件页数的办法。 安装…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
《C++ 模板》
目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板,就像一个模具,里面可以将不同类型的材料做成一个形状,其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式:templa…...
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要
根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分: 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...
从“安全密码”到测试体系:Gitee Test 赋能关键领域软件质量保障
关键领域软件测试的"安全密码":Gitee Test如何破解行业痛点 在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的"神经中枢"。从国防军工到能源电力,从金融交易到交通管控,这些关乎国计民生的关键领域…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
comfyui 工作流中 图生视频 如何增加视频的长度到5秒
comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗? 在ComfyUI中实现图生视频并延长到5秒,需要结合多个扩展和技巧。以下是完整解决方案: 核心工作流配置(24fps下5秒120帧) #mermaid-svg-yP…...
