当前位置: 首页 > news >正文

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类时,MONDAYTUESDAYWEDNESDAY等枚举常量就会被创建为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 大数据 学习详情

参考视频&#xff1a; 尚硅谷大数据Flink1.17实战教程从入门到精通_哔哩哔哩_bilibili 核心目标&#xff1a; 数据流上的有状态的计算 具体说明&#xff1a; Apache Flink是一个 框架 和 分布式处理引擎&#xff0c;用于对 无界&#xff08;eg&#xff1a;kafka&#xff09; 和…...

[项目设计] 从零实现的高并发内存池(四)

&#x1f308; 博客个人主页&#xff1a;Chris在Coding &#x1f3a5; 本文所属专栏&#xff1a;[高并发内存池] ❤️ 前置学习专栏&#xff1a;[Linux学习] ⏰ 我们仍在旅途 ​ 目录 6.内存回收 6.1 ThreadCache回收内存 6.2 CentralCache回收内存 Rele…...

02.URL的基本知识和使用

一.认识 URL 1. 为什么要认识 URL ? 虽然是后端给我的一个地址&#xff0c;但是哪部分标记的是服务器电脑&#xff0c;哪部分标记的是资源呢&#xff1f;所以为了和服务器有效沟通我们要认识一下 2. 什么是 URL &#xff1f; 统一资源定位符&#xff0c;简称网址&#xff…...

人工智能指数报告2023

人工智能指数报告2023 主要要点第 1 章 研究与开发第 2 章 技术性能第 3 章 人工智能技术伦理第 4 章 经济第 5 章 教育第 6 章 政策与治理第 7 章 多样性第 8 章 舆论 人工智能指数是斯坦福大学以人为本的人工智能研究所&#xff08;HAI&#xff09;的一项独立倡议&#xff0c…...

Android如何对应用进行系统签名

一、使用命令 获取签名文件 从系统源码环境中获取签名相关文件&#xff1a; platform.x509.pem、platform.pk8 、signapk.jar platform.x509.pem、platform.pk8 位于 ../build/target/product/security 目录下。signapk.jar 位于 ../out/host/linux-x86/framework 目录下。 …...

【系统安全加固】Centos 设置禁用密码并打开密钥登录

文章目录 一&#xff0c;概述二&#xff0c;操作步骤1. 服务器端生成密钥2. 在服务器上安装公钥3.下载私钥到本地&#xff08;重要&#xff0c;否则后面无法登录&#xff09;4. 修改配置文件&#xff0c;禁用密码并打开密钥登录5. 重启sshd服务6. 配置xshell使用密钥登录 一&am…...

关于我在项目中封装的一些自定义指令

什么是指令 在Vue中提供了一套为数据驱动视图更为方便的操作&#xff0c;这些操作被称为指令系统。我们看到的v-来头的行内属性&#xff0c;都是指令&#xff0c;不同的指令可以完成或者实现不同的功能。 除了核心功能默认内置的指令&#xff08;v-model和v-show&#xff09;…...

react经验11:访问循环渲染的子组件内容

前有访问单个子组件的需求&#xff0c;现在进一步需要访问循环渲染中的子组件。 访问单个子组件的成员 实施步骤 子组件//child.tsx export declare type ChildInstance{childMethod:()>void } const Child(props:{value:stringonMounted?:(ref:ChildInstance)>void …...

Java开发工程师面试题(业务功能)

一、订单超时未支付自动关闭的几种实现方式。 定时任务扫描&#xff1a;在订单创建时&#xff0c;为订单创建一个定时任务&#xff0c;并设置一个超时时间。后端服务器会定期检查任务的创建时间是否超过了超时时间。如果是&#xff0c;则将订单设置为关闭状态。这种方案需要后…...

BUUCTF-Misc-百里挑一

题目链接&#xff1a;BUUCTF在线评测 (buuoj.cn) 下载附件打开是一个流量包文件&#xff1a; 全是在传图片时候的流量&#xff0c;先把图片保存出来文件–>导出对象–>HTTP–>保存到一个文件夹 然后使用kali下的exiftool找到了一半flag exiftool *|grep flag 另外一半…...

【力扣刷题练习】42. 接雨水

题目描述&#xff1a; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 题目解答&#xff1a; class Solution {public int trap(int[] height) {int n height.length;int ans 0;if (n < 3)return…...

鸿蒙实战开发:数据交互【RPC连接】

概述 本示例展示了同一设备中前后台的数据交互&#xff0c;用户前台选择相应的商品与数目&#xff0c;后台计算出结果&#xff0c;回传给前台展示。 样例展示 基础信息 RPC连接 介绍 本示例使用[ohos.rpc]相关接口&#xff0c;实现了一个前台选择商品和数目&#xff0c;后台…...

QLC SSD:LDPC纠错算法的优化方案

随着NAND TLC和QLC出现,LDPC也在不断的优化研究,提升纠错能力。小编看到有一篇来自Microchip发布的比较详细的LDPC研究数据,根据自己的理解分析解读给大家,如有错误,请留言指正! 文档中测试LDPC(Low-Density Parity-Check)码是为了评估其在不同配置下对数据错误的有效…...

【Flutter 面试题】main()和runApp()函数在Flutter的作用分别是什么?有什么关系吗?

【Flutter 面试题】main()和runApp()函数在Flutter的作用分别是什么&#xff1f;有什么关系吗&#xff1f; 文章目录 写在前面解答补充说明 写在前面 关于我 &#xff0c;小雨青年 &#x1f449; CSDN博客专家&#xff0c;GitChat专栏作者&#xff0c;阿里云社区专家博主&…...

ChatGPT高效提问——说明提示技巧

ChatGPT高效提问——说明提示技巧 现在&#xff0c;让我们开始体验“说明提示技巧”&#xff08;IPT, Instructions Prompt Technique&#xff09;和如何用它生成来自ChatGPT的高质量的文本。说明提示技巧是一个通过向ChatGPT提供需要依据的具体的模型的说明来指导ChatGPT输出…...

从零学算法41

41.给你一个未排序的整数数组 nums &#xff0c;请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,0] 输出&#xff1a;3 示例 2&#xff1a; 输入&#xff1a;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类关系详解 泛化&#xff08;Generalization&#xff09;关系 简单的讲就是类之间的继承关系。在UML中&#xff0c;泛化关系用空心三角形实线来表示&…...

Python 快速获取PDF文件的页数

有时在处理或打印一个PDF文档之前&#xff0c;你可能需要先知道该文档包含多少页。虽然我们可以使用Adobe Acrobat这样的工具来查看页数&#xff0c;但对于程序员来说&#xff0c;编写脚本来完成这项工作会更加高效。本文就介绍一个使用Python快速获取PDF文件页数的办法。 安装…...

盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来

一、破局&#xff1a;PCB行业的时代之问 在数字经济蓬勃发展的浪潮中&#xff0c;PCB&#xff08;印制电路板&#xff09;作为 “电子产品之母”&#xff0c;其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透&#xff0c;PCB行业面临着前所未有的挑战与机遇。产品迭代…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

DBAPI如何优雅的获取单条数据

API如何优雅的获取单条数据 案例一 对于查询类API&#xff0c;查询的是单条数据&#xff0c;比如根据主键ID查询用户信息&#xff0c;sql如下&#xff1a; select id, name, age from user where id #{id}API默认返回的数据格式是多条的&#xff0c;如下&#xff1a; {&qu…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

Linux离线(zip方式)安装docker

目录 基础信息操作系统信息docker信息 安装实例安装步骤示例 遇到的问题问题1&#xff1a;修改默认工作路径启动失败问题2 找不到对应组 基础信息 操作系统信息 OS版本&#xff1a;CentOS 7 64位 内核版本&#xff1a;3.10.0 相关命令&#xff1a; uname -rcat /etc/os-rele…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲

文章目录 前言第一部分&#xff1a;体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分&#xff1a;体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...

快刀集(1): 一刀斩断视频片头广告

一刀流&#xff1a;用一个简单脚本&#xff0c;秒杀视频片头广告&#xff0c;还你清爽观影体验。 1. 引子 作为一个爱生活、爱学习、爱收藏高清资源的老码农&#xff0c;平时写代码之余看看电影、补补片&#xff0c;是再正常不过的事。 电影嘛&#xff0c;要沉浸&#xff0c;…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...