当前位置: 首页 > 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文件页数的办法。 安装…...

SAP EWM实战:从产品到处理单位,两种库存转移操作保姆级教程

SAP EWM库存转移实战指南&#xff1a;产品与处理单位的精准操作 在仓库管理的日常工作中&#xff0c;库存转移是最基础却最容易出错的环节之一。特别是对于刚接触SAP EWM系统的管理员来说&#xff0c;面对不同形态的物料——散件产品和带包装的处理单位(HU)&#xff0c;往往会产…...

从B类到连续类:一篇讲透功放效率与带宽的“鱼与熊掌”兼得史

射频功率放大器的进化论&#xff1a;从B类到连续类的带宽革命 在无线通信技术狂飙突进的三十年里&#xff0c;有个看似矛盾的命题始终困扰着工程师&#xff1a;如何让功率放大器同时"吃得少"&#xff08;高效率&#xff09;和"干得多"&#xff08;宽带宽&…...

Discovery与Kubernetes深度集成:实现容器化微服务注册发现的终极指南

Discovery与Kubernetes深度集成&#xff1a;实现容器化微服务注册发现的终极指南 【免费下载链接】discovery A registry for resilient mid-tier load balancing and failover. 项目地址: https://gitcode.com/gh_mirrors/discov/discovery 在当今云原生时代&#xff0…...

如何高效修复损坏视频:专业MP4恢复工具untrunc实战指南

如何高效修复损坏视频&#xff1a;专业MP4恢复工具untrunc实战指南 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 你是否曾因视频文件意外损坏而痛心疾首&#xff…...

AM62A1-Q1汽车视觉处理器:低功耗、高集成度的车载视觉解决方案

1. 项目概述&#xff1a;为什么我们需要一颗“小而美”的汽车视觉处理器&#xff1f;最近在做一个车载环视和DMS&#xff08;驾驶员监控系统&#xff09;的预研项目&#xff0c;客户对成本和功耗卡得非常死&#xff0c;但功能要求却一点没降&#xff1a;需要同时处理1到2路摄像…...

声磁同步定点仪怎么选?这份选购经验干货分享

做工厂电缆故障检测、地埋电缆探测的工程人员&#xff0c;多半都踩过定点仪的坑&#xff1a;设备抗干扰差&#xff0c;复杂厂区地下管线密集&#xff0c;找半天定不准点位&#xff0c;开挖错位置不仅耽误工期&#xff0c;额外的开挖成本、停产损失动辄几万到几十万。作为常年跟…...

RKNN Model Zoo实战:MobileSAM图像分割在瑞芯微平台的完整部署指南

RKNN Model Zoo实战&#xff1a;MobileSAM图像分割在瑞芯微平台的完整部署指南 【免费下载链接】rknn_model_zoo 项目地址: https://gitcode.com/gh_mirrors/rk/rknn_model_zoo 在边缘计算和嵌入式AI应用场景中&#xff0c;图像分割技术正成为智能监控、工业质检和AR/V…...

如何免费下载中国大学MOOC视频:MoocDownloader完整使用指南

如何免费下载中国大学MOOC视频&#xff1a;MoocDownloader完整使用指南 【免费下载链接】MoocDownloader An MOOC downloader implemented by .NET. 一枚由 .NET 实现的 MOOC 下载器. 项目地址: https://gitcode.com/gh_mirrors/mo/MoocDownloader 你是否曾经因为网络不…...

无王无帝定乾坤,来自田间第一人 凰标重塑新风骨

一、破题&#xff1a;王权不是答案旧认知新真相山河气运系于帝王扭转乾坤藏于民间位高者裁定是非布衣亦可定乾坤权贵定义风骨凰标重塑精神二、旧世风骨之殇等级枷锁 王权为纲 → 尊卑为界 → 精神镣铐千年。世俗偏见 财富分贵贱 → 地位论高低 → 人心逐利忘本。结局 风骨消磨 …...

透明计费如何帮助精准预测与控制AI功能月度开支

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 透明计费如何帮助精准预测与控制AI功能月度开支 1. 项目背景&#xff1a;深度集成AI的网站 我们负责一个内容创作辅助网站&#x…...