当前位置: 首页 > 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…...

React+GSAP实战:5种酷炫滚动动画效果完整代码分享(含ScrollTrigger配置)

ReactGSAP实战&#xff1a;5种酷炫滚动动画效果完整代码分享&#xff08;含ScrollTrigger配置&#xff09; 在现代Web开发中&#xff0c;流畅的滚动动画已经成为提升用户体验的关键因素。作为前端开发者&#xff0c;我们经常需要实现各种吸引眼球的滚动效果&#xff0c;从简单的…...

Ostrakon-VL-8B功能体验:图文对话模型在零售场景的真实表现

Ostrakon-VL-8B功能体验&#xff1a;图文对话模型在零售场景的真实表现 1. 零售场景下的AI助手需求 在零售行业&#xff0c;每天都有大量需要人工处理的视觉任务&#xff1a;商品识别、货架检查、库存盘点、价格标签核对等。传统方法要么依赖人工检查效率低下&#xff0c;要么…...

5分钟搞定RetroArch缩略图:从黑屏到完美游戏封面的全攻略

5分钟搞定RetroArch缩略图&#xff1a;从黑屏到完美游戏封面的全攻略 【免费下载链接】RetroArch Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3. 项目地址: https://gitcode.com/GitHub_Trending/re/RetroArch 还记得打开RetroArch游戏…...

为什么Python社区推荐用pipx替代pip?以virtualenv安装为例演示工作流

为什么Python开发者应该用pipx替代pip&#xff1f;以virtualenv为例的完整隔离方案 当你在Ubuntu终端输入pip install virtualenv时&#xff0c;那个刺眼的externally-managed-environment错误提示就像一堵墙——这不是技术故障&#xff0c;而是Python生态进化的重要路标。传统…...

仅限前500位开发者获取:20年MCP协议老兵手写《Python服务器模板源码认知地图》PDF+可执行调试镜像

第一章&#xff1a;MCP协议核心原理与Python服务器模板设计哲学MCP&#xff08;Model Control Protocol&#xff09;是一种轻量级、面向模型交互的双向通信协议&#xff0c;专为AI代理系统与外部工具服务之间的结构化指令交换而设计。其核心在于以JSON-RPC 2.0为传输语义基础&a…...

zynq7020 u-boot 外设配置实战指南

1. Zynq7020 U-Boot外设配置概述 在嵌入式系统开发中&#xff0c;U-Boot作为系统启动加载器扮演着关键角色。对于Xilinx Zynq-7020平台来说&#xff0c;正确配置U-Boot外设是确保系统正常启动和运行的基础。本文将重点介绍网口、QSPI Flash和eMMC这三个核心外设的配置方法。 为…...

西门子PLC存储区全解析:从M区到DB块的实战避坑指南

西门子PLC存储区全解析&#xff1a;从M区到DB块的实战避坑指南 第一次接触西门子PLC编程时&#xff0c;面对M区、L区和DB块这些存储区概念&#xff0c;我完全摸不着头脑。记得有次调试设备&#xff0c;明明在线监控看到M0.0已经置位&#xff0c;但程序就是不执行相应动作&#…...

数据中台是什么?怎么搭建数据中台?

去年&#xff0c;一家零售企业的CEO找到我&#xff0c;说了一句让我印象很深的话&#xff1a; "我们公司有数据&#xff0c;但没有数据能力。"很多企业建数据中台&#xff0c;是为了管好数据。 但这个出发点&#xff0c;从一开始就错了。 数据中台的核心不是管理&…...

从‘腐蚀液’到‘设计美学’:PCB布线‘禁止直角’这条规则是怎么流行起来的?

从工艺限制到设计美学&#xff1a;PCB布线"禁止直角"规则的历史演变 在电子工程领域&#xff0c;PCB布线中"禁止直角"的规则几乎成为了一种行业圣经。从大学实验室到商业设计部门&#xff0c;新手工程师们总是被反复告诫要避免在布线中使用90度转角。但有趣…...

HarmonyOS6 半年磨一剑 - RcCheckboxGroup 组件与全选不确定态机制深度解析

文章目录前言一、RcCheckboxGroup 内部状态同步1.1 双层状态管理1.2 选中状态判断二、布局渲染架构2.1 横向与纵向的渲染分支2.2 itemGap 的类型安全处理2.3 属性透传机制三、全选与不确定态&#xff08;indeterminate&#xff09;3.1 三态状态机3.2 全选逻辑实现3.3 indetermi…...