Java面向对象学习第三部分
一、Static修饰符
static是静态的意思,基本概念如下:
Static分类:
一般我们分类都是按照是否使用static修饰进行分类。分为静态变量(类变量)、实例变量。


静态变量和实例变量的比较:
比较,只要记住一点其它的就都很好理解了。静态变量在内存空间只有一份。


使用场景:


应用实例:

需要注意:静态方法只能访问静态实例。不能访问实例变量。
一二、单例模式


饿汉式模型:

懒汉式模型:

应用场景:


main()方法解释:
加了static之后,可以看作是程序的入口。
一三、代码块
代码块就是用来初始化类和对象的信息。根据初始化的内容不同,分为静态代码块和非静态代码块。
基本概念:


代码块的使用:

一四、类中属性赋值顺序:
(笔试题常考)


二、final修饰符:
概念:
final修饰符表示最终的,用在类、方法、变量。在方法里,代表地址不能变。在变量上,表示变量内容不能变。在类里,无法被继承。
而前面学到static修饰符,它更多的用在代码块,对属性赋值时用的比较多。

final修饰变量的分类:


三、抽象类和方法
抽象,就是只有方法签名,没有方法体。分为抽象类和抽象方法。它的具体实现主要在于重写抽象方法。(而且重写抽象类的属性叫做implement,不是ovriding)
基本概念:

只用于修饰类和方法。不能用于修饰属性!
具体使用:


作用范围:(常考)

三二、模板方法设计模式:
(TemplateMethod)

看这个模板设计模式,其实就是抽象类的一个特性,它表明,在抽象类里面可以写抽象方法也可以写非抽象方法。而在继承的子类里面,只需要重写抽象方法即可。
疑惑::
前面说,抽象类的实例化,必须由子类全部重写父类的方法才能实现类的实例化。那这种模板设计模式,应该是不会重写抽象类的非抽象方法的。那直接实例化是否会报错?
可以直接实例化子类!那也就是说没有全部重写父类的方法,只重写父类的抽象方法。子类是可以运行的,不会被认作抽象类。
三三、接口(重点)
接口,其实就是和抽象类一样的特性,不过,和抽象类不同的是,它们不是继承关系,而是实现关系!也不是子类和父类的关系,而是接口(相当于父类)和实现类的关系。接口也有多态性。它和抽象的不同就是,它没有构造器。用不了super和this的方法。
概念:
就是“能不能”,相当于某一个功能性的实现!

样例模型:
声明属性,不要忘记添加static final;声明方法,不要忘记添加abstract。



接口的特性:


新增两种匿名对象的方式:


面试题:区分抽象类和接口

继承和接口的综合使用:

三四、JDK8和JDK9的接口新特性
JDK8之前,方法的修饰必须加上public abstract。
JDK8之后,可以调用默认方法,静态方法(static)。
知识点1:接口声明的静态方法,只能由接口调用。不能由其实现类调用。

知识点2:接口声明的默认方法可以被实现类继承。相当于实现类继承接口的默认方法。有重写的特性。

知识点3:类实现两个接口,这两个接口有同名同参的默认方法。若实现类没有重写这两个默认方法,就会报错。(接口的默认方法冲突)

知识点4:子类继承父类然后又实现了接口。但是父类和接口有同名同参的方法。默认调用父类的方法。类优先原则。
知识点5:在实现类中调用接口里被重写的方法。(接口.super.方法() )

四、内部类
内部类,其实就是创建在一个类中的另一个类,它和外部类的关系是this关系,不是继承,也不是实现。内部类的作用是可以实现“高内聚,低耦合”的开发原则。
基本概念:

分类:

需要掌握:
创建内部类的实例、在内部类调用外部类的结构。

成员内部类的理解:

创建内部类的实例(考):
有两种类型的创建方式,分为静态内部类的创建实例(new 类.类),非静态内部类的创建实例(类对象.new.类)。

接口内部类的三种匿名方式:
这个Comparable是jdk自带的一个类。



内部类传值(常考)

五、枚举类
枚举类也是一种类,它和class修饰的类不同的是,枚举它不能在测试里面随意创建它的对象。枚举相当于是已经在此类里面创建好了实例。
概念:


枚举类的实现:
在JDK5之前,实现在类的外部不能创建其对象(也就是实现枚举的方式):
第一步:声明当前类的对象的实例变量(声明属性)。(外不可见)
第二步:私有化类的构造器。 在外部不能创建对象。
第三步:创建类的实例。public static final。声明常量对象。(外可见)

jdk5之后直接使用枚举类:

枚举类的使用方式:
主要在平常例子里面,我们创建好了枚举类之后,怎么使用它。下面介绍了几种方式,主要记住,枚举类型[ ] values()。它返回该对象的数组。

测试实例:


枚举类实现接口:
实现对应于继承关系
枚举的类型:
分为无参的枚举,这种情况下没有构造器,没有重写tostring方法。
带参的枚举,这种情况下有构造器,需要根据需要重写tostring方法。


相关文章:
Java面向对象学习第三部分
一、Static修饰符 static是静态的意思,基本概念如下: Static分类: 一般我们分类都是按照是否使用static修饰进行分类。分为静态变量(类变量)、实例变量。 静态变量和实例变量的比较: 比较,…...
python+vue生成条形码码并展示
需求 最近想做一个小工具,大概要实现这样的效果:后端生成条形码后,不保存到服务器,直接返回给前端展示。 大概思路是,通过 python-barcode库 生成条码的字节流,生成字节流后直接编码成base64格式返回给前…...
在线高精地图生成算法调研
1.HDMapNet 整体的网络架构如图所示,最终的Decoder输出三个分支,一个语义分割,一个embedding嵌入分支,一个方向预测。然后通过后处理将这些信息处理成向量化的道路表示。 img2bev的方式之前有IPM,通过假设地面的高度都…...
【干货】商城系统的重要功能特性介绍
电子商务的快速发展,商城系统成为了企业开展线上销售的重要工具。一款功能强大、用户友好的商城系统能够有效提升企业的销售业绩,提供良好的购物体验。下面就商城系统的重要功能特性作一些简单介绍,帮助企业选择合适的系统,打造成…...
MYSQL06高级_为什么使用索引、优缺点、索引的设计、方案、聚簇索引、联合索引、注意事项
文章目录 ①. 为什么使用索引②. 索引及其优缺点③. InnoDb - 索引的设计④. InnoDb中的索引方案⑤. 索引 - 聚簇索引⑥. 索引 - 二级索引⑦. B树索引的注意事项⑧. MyISAM中索引方案 ①. 为什么使用索引 ①. 索引是存储引擎用于快速找到数据记录的一种数据结构,就好比去图书馆…...
LeetCode 130. 被围绕的区域
题目链接:130. 被围绕的区域 题目描述 给你一个 m x n 的矩阵 board ,由若干字符 ‘X’ 和 ‘O’ ,找到所有被 ‘X’ 围绕的区域,并将这些区域里所有的 ‘O’ 用 ‘X’ 填充。 示例1: 输入:board [[“…...
python中2等于2.0吗,python中【1:2】
本篇文章给大家谈谈python中2等于2.0吗,以及python中【1:2】,希望对各位有所帮助,不要忘了收藏本站喔。 变量和赋值 Python中的变量不需要声明, 直接定义即可. 会在初始化的时候决定变量的 “类型” 使用 来进行初始化和赋值操作 定义变量时…...
【2023年11月第四版教材】《第2章-信息技术发展(第一部分)》
《第2章-信息技术发展(第一部分)》 章节说明1 计算机软硬件2 计算机网络2.1 网络的作用范围2.2 OSI模型2.3 广域网协议2.4 网络协议2.5 TCP/IP2.6 软件定义网络(SDN)2.7 第五代移动通信技术 章节说明 大部分为新增内容࿰…...
【CSS】说说对BFC的理解
目录 一、概念 二、BFC的布局规则 三、设置BFC的常用方式 四、BFC的应用场景 1、解决浮动元素令父元素高度坍塌的问题 2、解决非浮动元素被浮动元素覆盖问题 3、解决外边距垂直方向重合的问题 五、总结 一、概念 我们在页面布局的时候,经常出现以下情况&am…...
ES6学习-Class类
class constructor 构造方法 this 代表实例对象 方法之间不需要逗号分隔,加了会报错。 typeof Point // "function" Point Point.prototype.constructor // true类的数据类型就是函数,类本身就指向构造函数。 类的所有方法都定义在类的pr…...
C语言经典小游戏之扫雷(超详解释+源码)
“少年气,是历尽千帆举重若轻的沉淀,也是乐观淡然笑对生活的豁达!” 今天我们学习一下扫雷游戏怎么用C语言来实现! 扫雷小游戏 1.游戏介绍2.游戏准备3.游戏实现3.1生成菜单3.2游戏的具体实现3.2.1初始化棋盘3.2打印棋盘3.3布置雷…...
算法leetcode|67. 二进制求和(rust重拳出击)
文章目录 67. 二进制求和:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 67. 二进制求和: 给你两个二进制字符串 a 和 b &a…...
【ASP.NET MVC】第一个登录页面(8)
一、准备工作 先从网上(站长之家、模板之家,甚至TB)下载一个HTML模板,要求一整套的CSS和必要的JS,比如下图: 登录页面的效果是: 首页: 利用这些模板可以减少前台网页的设计——拿来…...
使用Openoffice或LibreOffice实现World、Excel、PPTX在线预览
使用Openoffice或LibreOffice实现World、Excel、PPTX在线预览 预览方案使用第三方服务使用前端库转换格式 jodconverterjodconverter概述主要特性OpenOfficeLibreOffice jodconverter的基本使用添加依赖配置创建DocumentConverter实例上传与转换预览启动上传与预览World 与Spri…...
20天学会rust(三)没有object的rust怎么面向对象?
面向对象我们都很熟悉,可以说它是一种软件开发最重要的编程范式之一,它将程序中的数据和操作数据的方法组织成对象。面向对象有几个重要特性: 封装、继承和多态,基于这些特性带来了在可重用性、可维护性、扩展性、可靠性的优点。 …...
整数规划——第三章 全单模矩阵
整数规划——第三章 全单模矩阵 若线性规划问题的约束矩阵为全单模矩阵,则该问题可行域的顶点都是整数点,从而线性规划与整数规划的最优解相同。 3.1 全单模性与最优性 考虑线性整数规划问题: (IP) min c T x , s . t . A x ≤ b , x …...
数据结构和算法
数据结构和算法目录表 CCJava线性结构 1. 数组、单链表和双链表 2. Linux内核中双向链表的经典实现 数组、单链表和双链表 数组、单链表和双链表 栈 栈 栈 队列 队列 队列树形结构 二叉查找树 二叉查找树 二叉查找树 AVL树 AVL树 AVL树 伸展树 伸展树 伸展树 1. 红黑树(一)之…...
[Vulnhub] matrix-breakout-2-morpheus
目录 <1> 信息收集 <2> getshell <3> Privilege Escalation(提权) <1> 信息收集 nmap -sP 192.168.236.0/24 扫描一下靶机ip 靶机ip: 192.168.236.154 nmap -A -p 1-65535 192.168.236.154 扫描一下靶机开放哪些服务 开放…...
JDK, JRE和JVM之间的区别和联系
JDK, JRE和JVM是与Java编程语言相关的三个重要的概念,它们分别代表Java Development Kit(Java开发工具包)、Java Runtime Environment(Java运行时环境)和Java虚拟机(Java Virtual Machine)。它们…...
mac电脑访问windows共享文件夹连接不上(设置445端口)
前提:首先需要保证mac和windows都在同一局域网内,如果不在肯定是连不上的,就不用往下看了。 事情是这样的,公司入职发了mac电脑,但是我是window重度用户,在折腾mac的过程中,有许多文件需要从wi…...
Typora与AI结合:使用万象熔炉·丹青幻境为Markdown文档自动配图
Typora与AI结合:使用万象熔炉丹青幻境为Markdown文档自动配图 不知道你有没有过这样的体验:在Typora里写完一篇技术博客或项目文档,内容详实,逻辑清晰,但通篇下来全是文字,总觉得少了点什么。想配几张图吧…...
OpenRouter最新免费额度调整:如何用微信支付宝充值解锁1000次/天API调用
OpenRouter API调用新规解析:微信支付宝充值实战指南 最近OpenRouter平台对免费API调用额度进行了重要调整,这一变化直接影响着国内开发者和AI爱好者的日常使用体验。作为聚合了300多个主流AI模型的统一接口平台,OpenRouter一直以友好的免费政…...
终极指南:buger/jsonparser如何10倍加速处理第三方API不确定性数据
终极指南:buger/jsonparser如何10倍加速处理第三方API不确定性数据 【免费下载链接】jsonparser One of the fastest alternative JSON parser for Go that does not require schema 项目地址: https://gitcode.com/gh_mirrors/js/jsonparser 在处理第三方AP…...
Cursor Pro功能解锁全攻略:从免费版到专业体验的完整指南
Cursor Pro功能解锁全攻略:从免费版到专业体验的完整指南 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reached your …...
Java结构化并发崩溃了?手把手教你用VirtualThread+StructuredTaskScope定位线程泄漏与作用域越界(附JDK21真机调试录屏)
第一章:Java结构化并发崩溃了?手把手教你用VirtualThreadStructuredTaskScope定位线程泄漏与作用域越界(附JDK21真机调试录屏)Java 21 正式引入结构化并发(Structured Concurrency),其核心组件 …...
三步掌握开源资源处理工具:让RPG Maker MV资源处理效率提升90%
三步掌握开源资源处理工具:让RPG Maker MV资源处理效率提升90% 【免费下载链接】RPG-Maker-MV-Decrypter You can decrypt RPG-Maker-MV Resource Files with this project ~ If you dont wanna download it, you can use the Script on my HP: 项目地址: https:/…...
OpenRGB:开源跨平台RGB灯光控制方案,告别多软件困扰实现设备统一管理
OpenRGB:开源跨平台RGB灯光控制方案,告别多软件困扰实现设备统一管理 【免费下载链接】OpenRGB Open source RGB lighting control that doesnt depend on manufacturer software. Supports Windows, Linux, MacOS. Mirror of https://gitlab.com/CalcPr…...
Qwen2.5-14B-Instruct多轮记忆|像素剧本圣殿长剧本连贯性保障机制
Qwen2.5-14B-Instruct多轮记忆|像素剧本圣殿长剧本连贯性保障机制 1. 专业剧本创作的新范式 在创意写作领域,剧本创作一直面临着角色一致性、情节连贯性和风格统一性的挑战。传统创作工具往往只能提供片段式的辅助,而"像素剧本圣殿&qu…...
手把手教你用Arm Cortex-A715手册:从RAS到调试,一份给芯片设计者的实战笔记
Cortex-A715实战指南:芯片设计者的RAS与调试技术精要 在当今高性能计算领域,Arm Cortex-A715处理器核心凭借其卓越的能效比和性能表现,已成为众多芯片设计项目的首选。本文将从工程实践角度,深入剖析Cortex-A715的两个关键子系统&…...
Pixel Epic效果展示:支持Markdown+LaTeX混合输出的学术论文初稿生成案例
Pixel Epic效果展示:支持MarkdownLaTeX混合输出的学术论文初稿生成案例 1. 像素史诗:科研写作的新范式 在传统学术写作工具普遍沉闷单调的背景下,Pixel Epic带来了一场视觉与功能双重革新的科研体验。这款基于AgentCPM-Report大模型的智能终…...
