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…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...
ESP32读取DHT11温湿度数据
芯片:ESP32 环境:Arduino 一、安装DHT11传感器库 红框的库,别安装错了 二、代码 注意,DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
Qt 事件处理中 return 的深入解析
Qt 事件处理中 return 的深入解析 在 Qt 事件处理中,return 语句的使用是另一个关键概念,它与 event->accept()/event->ignore() 密切相关但作用不同。让我们详细分析一下它们之间的关系和工作原理。 核心区别:不同层级的事件处理 方…...
规则与人性的天平——由高考迟到事件引发的思考
当那位身着校服的考生在考场关闭1分钟后狂奔而至,他涨红的脸上写满绝望。铁门内秒针划过的弧度,成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定",构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...
