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

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 第五代移动通信技术 章节说明 大部分为新增内容&#xff0…...

【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&#xff08;提权&#xff09; <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编程语言相关的三个重要的概念&#xff0c;它们分别代表Java Development Kit&#xff08;Java开发工具包&#xff09;、Java Runtime Environment&#xff08;Java运行时环境&#xff09;和Java虚拟机&#xff08;Java Virtual Machine&#xff09;。它们…...

mac电脑访问windows共享文件夹连接不上(设置445端口)

前提&#xff1a;首先需要保证mac和windows都在同一局域网内&#xff0c;如果不在肯定是连不上的&#xff0c;就不用往下看了。 事情是这样的&#xff0c;公司入职发了mac电脑&#xff0c;但是我是window重度用户&#xff0c;在折腾mac的过程中&#xff0c;有许多文件需要从wi…...

[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解

突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 ​安全措施依赖问题​ GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

C++初阶-list的底层

目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解

本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

PL0语法,分析器实现!

简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

MySQL用户和授权

开放MySQL白名单 可以通过iptables-save命令确认对应客户端ip是否可以访问MySQL服务&#xff1a; test: # iptables-save | grep 3306 -A mp_srv_whitelist -s 172.16.14.102/32 -p tcp -m tcp --dport 3306 -j ACCEPT -A mp_srv_whitelist -s 172.16.4.16/32 -p tcp -m tcp -…...