Java面向对象学习第三部分

news2024/12/25 12:53:54

一、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方法。

 

六、注解Annotation

 注解就是从jdk5.0开始,以@注解名的方式存在。它的作用就是简便。可以代替一些配置文件的使用。也可以指定所使用类的范围。

基本概念:

 

 基本的注解:

常用的注解就是前面两个。

元注解:

其实就是对现有注解在注解。用来指定这个注解的范围、格式。

6.1、单元测试(重要)

单元测试本质就是白盒测试。像之前我们使用增删改查,每一个类都要写一个测试类。这样就比较麻烦,通过单元测试就不用每一个类都写一个测试。可以把需要测试的类、方法都放一起。每一个都可以单独测试。而且它也可以把一个类里不同的方法也单独测试。 

基本概念:

基本步骤:

样例:@Test

简化操作: 

七、包装类的理解

包装类就是swapper。通过学习包装类,我们可以在使用基本数据类型时将其转换为引用数据类型。因为一些基本数据类型是用不了面向对象的一些方法。就很不方便。例如下面:

存在的必要:

 

核心要求:

基本数据和包装类之间的转换。

案例操作:

 

 jdk5之后:

jdk5之后的版本,开始使用自动装箱和自动拆箱。比之前使用的方式更加迅捷,但是本质还是使用基本的方式。 

7.1、String的数据转换:

基本概念:

 

互相转换:

对于String类型,包装类,基本数据类型的转换如下图所示。其实在jdk5之后,相当于只有String类和(String类与包装类)的互相转换。

 

自动装箱注意:

自动装箱的方式应该只适用于包装类和基本数据类型类。对于String类,它的本质就是另类的包装类。它的转换方式是String.valueOf( i )。而之前学的基本型转包装类也是,Interger.valueOf( i )。

不同的是String转基本类。使用的方式是parseInt( String )。而包装类转基本类使用的是intValue( Integer )。

 

案例操作:

前面学习使用数组存储数据,这次这里使用vector的方式存储。它们的优缺点:

 操作步骤:

 

使用自动装箱和装箱的差异: 

 v.addElement(Object obj);  相当于Object obj = intScore。(进行了自动装箱)。这种方式用的最多的。

笔试题:

 

八、IDEA快捷键和断点。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/860771.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(贪心) 剑指 Offer 14- I. 剪绳子 ——【Leetcode每日一题】

❓剑指 Offer 14- I. 剪绳子 难度:中等 给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n > 1 并且 m > 1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m…

Python机器学习实战-建立AdaBoost模型预测肾脏疾病(附源码和实现效果)

实现功能 建立AdaBoost模型(集成学习)预测肾脏疾病 实现代码 import pandas as pd import warnings warnings.filterwarnings("ignore") pd.set_option(display.max_columns, 26)#读取数据 df pd.read_csv("E:\数据杂坛\datasets\kidn…

江南大学轴承数据故障诊断(利用一维CNN进行故障诊断,代码和数据放在压缩包,无需修改任何东西,解压缩后直接运行,有详细注释)

1.江南大学轴承数据集介绍 采样频率:50khz,采样时间:10s 转速:600 800 1000/rpm 内圈:ib 外圈:ob 滚动体:tb 正常:N 以600转速下的内圈故障数据为例展示: 开始数据…

内网穿透实战应用-配置固定的远程桌面地址【内网穿透、无需公网IP】

配置固定的远程桌面地址【内网穿透、无需公网IP】 文章目录 配置固定的远程桌面地址【内网穿透、无需公网IP】第一步:保留TCP地址第二步:为远程桌面隧道配置固定的TCP地址第三步:使用固定TCP地址远程桌面 使用免费的cpolar生成的远程桌面公网…

STM32 定时器自动重装载寄存器ARR带来的影响,ARPE0和1区别

ARR是啥 自动重载寄存器是预装载的。对自动重载寄存器执行写入或读取操作时会访问预装载寄存器。预装载寄存器的内容既可以直接传送到影子寄存器,也可以在每次发生更新事件 (UEV) 时传送到影子寄存器,这取决于 TIMx_CR1 寄存器中的自动重载预装载使能位 …

C语言:函数栈帧的创建和销毁(32位下观察)

一、寄存器(0:3:35) 1.寄存器有哪些?(6种)(0:38:50) 2.esp和ebp这两个寄存器中,存放的是什么?用来干嘛的?&a…

3.利用matlab计算不定积分和定积分(matlab程序 )

1.简述 不定积分 首先,通过符号变量创建一个符号函数,然后调用积分命令来计算函数的积分,示例如下: 注意:matlab中计算的不定积分结果中没有写上常数C,读者需要自己在使用的时候记得加上常数部分。 通常情…

auto-changelog的简单使用

auto-changelog的简单使用 自动化生成Git提交记录,CHANGELOG.md文件 github:https://github.com/cookpete/auto-changelog 安装 npm install -g auto-changelog配置脚本 package.json文件下 "scripts": {"changelog": "aut…

Java多线程(九)

目录 一、synchronized基本特点 二、synchronized加锁工作过程 2.1 无锁 2.2 偏向锁 2.3 轻量级锁 2.4 重量级锁 三、synchronized其他优化操作 3.1 锁消除 3.2 锁粗化 一、synchronized基本特点 开始是乐观锁,如果锁冲突频繁就会转换成悲观锁开始是轻量级锁&#x…

UWA Pipeline 2.5.0 版本更新说明

UWA Pipeline是一款面向游戏开发团队的本地协作平台,旨在为游戏开发团队搭建专属的DevOps研发交付流水线,提供可视化的CICD操作界面、高可用的自动化测试以及UWA性能保障服务的无缝贴合等实用功能。 UWA Pipeline 2.5.0 版本发布,一批新功能…

Python系统学习1-6-元组

】目录 一、列表与字符串转换 二、列表推导式 三、元组 1、元组基本操作 2、元组和列表的内存图 四、容器思想 homework 一、列表与字符串转换 (1) 列表转换为字符串: result "连接符".join(列表) # 根据xx条件,循环拼接字符串 # 需…

指针---进阶篇(二)

指针---进阶篇(二) 前言一、函数指针1.抛砖引玉2.如何判断函数指针?(方法总结) 二、函数指针数组1.什么是函数指针数组?2.讲解函数指针数组3.模拟计算器:讲解函数指针数组 三、指向函数指针数组…

8年测试整理,接口测试-测试点分析与搜索查询测试点(超细汇总)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 接口可用性 主要…

Redux - Redux在React函数式组件中的基本使用

文章目录 一,简介二,安装三,三大核心概念Store、Action、Reducer3.1 Store3.2 Reducer3.3 Action 四,开始函数式组件中使用4.1,引入store4.1,store.getState()方法4.3,store.dispatch()方法4.4&…

10年软件测试行业经验教你如何写简历【绝对靠谱】

前言 作为软件测试的从业者,面试或者被面试都是常有的事。 可是不管怎样,和简历有着理不清的关系,面试官要通过简历了解面试者的基本信息、过往经历等。 面试者希望通过简历把自己最好的一面体现给面试官,所以在这场博弈中&…

若依vue -【 100 ~ 更 ~ 110 】

100 主子表代码生成详解 1 新建数据库表结构(主子表) -- ---------------------------- -- 客户表 -- ---------------------------- drop table if exists sys_customer; create table sys_customer (customer_id bigint(20) not null…

母猪产仔早知道,这次南农用上了英伟达边缘 AI Jetson

内容一览:对养猪业而言,母猪产仔是其中关键的一环。因此,提高猪仔成活率、确保母猪分娩过程安全,成为重要课题。现有的 AI 监测方式,存在着高设备成本与信息传输不稳定的问题,南京农业大学研究人员&#xf…

Kali Hyper-V安装正常启动后 黑屏 只能进命令模式

问题: Hyper-V安装虚拟机Kali系统一切安装正常, 没有出现错误. 安装成功后重启,只能进入命令模式,tt1-tt6,进不去GUI桌面. 尝试: 一代二代虚拟硬盘都试过,同样问题,只能开进后进入命令模式,在命令模式下一切运行正常, 也修复过系统 GNOM等的,不管用. 以下为国外论坛给的建议,尝…

Qt 文件对话框使用 Deepin风格

当你在Deepin或UOS 上开发 Qt 程序时,如果涉及到文件对话框功能,那么就会遇到调用原生窗口的问题。 如果你使用的是官方的Qt版本,那么在Deepin或者UOS系统上,弹出的文件对话框会是如下这样: 而Deepin或UOS系统提供的默…

【AI理论学习】手把手推导扩散模型:Diffusion Models(DDPM)

手把手推导扩散模型:Diffusion Models(DDPM) DDPM理论回顾前置知识过程详解Forward ProcessReverse Process DDPM算法伪代码训练部分采样部分 总结一下 参考链接 在这篇博客文章中,我们将深入研究 去噪扩散概率模型(也称为 DDPM&…