Java基础知识总结(43)

(1)初始化块

    和构造方法具有相同功能的是初始化块。当创建Java对象时,系统总是先调用类中定义的初始化块

(2)静态初始化块 如果定义初始化块使用了static修饰,则这个初始化块就变成了静态初始化块,也被称为类初始化块。静态初始化块是类相关的,系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行,因此静态初始化块比普通初始化块先执行。 注意:静态初始化块也被称为类初始化块,同样静态成员不能访问非静态成员,因此静态初始化块不能访问实例变量和实例方法。 静态代码块和初始化块的顺序: 父类静态块 ->子类静态块->父类初始化块和构造器->子类初始化块和构造器

public class Base { //先执行 创建子类对象时的代码 先调用父类初始化块和构造方法,然后执行子类的初始化块和构造方法 static Sub sub = new Sub(); //然后再按照静态代码块和初始化块的顺序的顺序执行 static{ System.out.println("Base静态初始化块!"); } { System.out.println("Base初始化块!"); } public Base() { System.out.println("Base构造方法!"); } }

public class Sub extends Base{

static{System.out.println("Sub静态初始化块!");
}
{System.out.println("Sub初始化块!");
}
public Sub() {System.out.println("Sub构造方法!");
}

}

运行结果:

Base初始化块! Base构造方法! Sub初始化块! Sub构造方法! Base静态初始化块! Sub静态初始化块! Base初始化块! Base构造方法! Sub初始化块! Sub构造方法! (3)final关键字 1.final修饰的类不能被继承 2.final修饰的变量初始化后不能被重新赋值。final修饰的实例变量可以直接初始化,也可以在初始化块和构造器中初始化。static修饰的常量只能在定义时静态块中初始化 3.final修饰的方法不能被重写(但是可以被重载) /**

  • 父类

  • @author Ray * */ public class Base { String name; int age;

    public final void test() { } //final修饰的方法可以被重载 public final void test(int i) { }

}

/**

  • 子类

  • @author Ray * */ public class Sub extends Base{ // 子类不能重写父类中用final修饰的方法 // public void test() { // // }

} (4)抽象类和接口

 父类一般描述了子类共有的,通用的行为或者属性,但是有些情况下,父类定义的方法体不具备通用性,或者该行为一定会被子类重写,那么此时定义方法体就显得多余,Java中提供了抽象方法,抽象方法只有方法头,没有方法体,也就是说抽象方法只规定子类的行为,而不提供实现。

(5)抽象类

 使用abstract修饰的类就是抽象类,普通类中包含的内容,在抽象类中都可以包含(成员变量,成员方法,构造器,内部类),此外抽象类中还可以声明抽象方法。抽象类可以理解为是对普通父类的抽象。如果某个普通类继承了抽象类,那么就必须要重写抽象方法,否则这个普通类也必须是抽象类。

(6)抽象方法

 使用abstract修饰的方法,叫做抽象方法,抽象方法只有方法头,没有方法体。定义抽象方法本来就是用来继承的,抽象方法不能用static、final、private修饰。

(7)接口 接口可以理解为对抽象类的抽象,因为抽象类中不但有抽象方法,还有实例方法及类方法等等,而接口中的内容则更加简洁。一个接口可以有多个直接父接口,但接口只能继承接口,不能继承类。 接口中只能包含:常量,抽象方法,默认方法,私有方法,类方法,不能包含构造器,初始化块,静态初始化块。

声明:

public interface Test { //常量 //抽象方法方法

 //Java8新增了默认方法(可以有方法体)
default void interfaceTest() {System.out.print("123");
}
//Java8新增了类方法
static void interfaceTest2() {
​
}
//Java9新增了私有方法(可以有方法体)
@SuppressWarnings("unused")
private void interfaceTest3() {System.out.print("123");
}

}

(8)接口和抽象类的区别

1、接口和抽象类都不能被实例化
2、接口和抽象类都可以包含抽象方法,实现接口或继承抽象类的普通子类都必须实现这些抽象方法。
3、接口里只能包含抽象方法、静态方法、默认方法和私有方法,抽象类则完全可以包含实例方法。
4、接口里只能定义静态常量,不能定义普通成员变量;抽象类里则既可以定义普通成员变量,也可以定义静态常量。
5、接口里不包含构造器; 抽象类里可以包含构造器,抽象类里的构造器并不是用于创建对象。
6、接口里不能包含初始化块; 但抽象类则完全可以包含初始化块。
7、一个类最多只能有一个直接父类,包括抽象类;但一个类可以直接实现多个接口

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

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

相关文章

html基础介绍

概念 HTML 文件 扩展名是 .html 的文件称为网页文件或者HTML文件HTML 文件使用代码编辑进行编辑&#xff0c;使用浏览器查看效果 声明方式 <!Doctype html>&#xff01;DOCTYPE 是一个文档类型标记&#xff0c;是一种标准通用标记语言的文档类型声明&#xff0c;在 w…

2024.4.6-day11-CSS 背景和精灵图

个人主页&#xff1a;学习前端的小z 个人专栏&#xff1a;HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结&#xff0c;欢迎大家在评论区交流讨论&#xff01; 文章目录 作业2024.4.6学习笔记1 背景2 背景图片3 CSS 精灵图 作业 <!DOCTYPE html&…

项目中 使用 spring cache redis 出现大量keys* 慢查询排查以及修复

前言 业务反馈 redis里有大量的慢查询 而且全是keys 的命令 排查 首先登录 阿里云查看redis的慢查询日志 如下 主要使用到redis cache的注解功能 分别是 CacheEvict 和 Cacheable 注意 CacheEvict 这个比较特殊 会进行驱逐缓存 说白就会删除缓存或者让缓存失效 第一时间想…

第十四届蓝桥杯省赛大学C组(C/C++)填充

原题链接&#xff1a;填充 有一个长度为 n 的 01 串&#xff0c;其中有一些位置标记为 ?&#xff0c;这些位置上可以任意填充 0 或者 1&#xff0c;请问如何填充这些位置使得这个 01 串中出现互不重叠的 0 和 1 子串最多&#xff0c;输出子串个数。 输入格式 输入一行包含一…

golang 数组和切片

区别 1.数组长度固定&#xff0c;切片长度可变 2.数组是深拷贝&#xff0c;切片是浅拷贝&#xff0c;切片是引用类型 扩容规则 不同版本不一样 https://www.jb51.net/article/280481.htm#_lab2_2_1 go1.18 1.如果期望容量大于当前容量的两倍就会使用期望容量&#xff1b; 2.如…

【保姆级教程】如何在 Windows 上实现和 Linux 子系统的端口映射

写在前面 上次分享【保姆级教程】Windows上安装Linux子系统&#xff0c;搞台虚拟机玩玩&#xff0c;向大家介绍了什么是虚拟机以及如何在Windows上安装Linux虚拟机。对于开发同学而言&#xff0c;经常遇到的一个问题是&#xff1a;很多情况下代码开发需要依赖 Linux 系统&…

基于单片机的风向风速传感器防冻装置设计

摘 要:高海拔地区冬季由于冻雨常会造成风向风速传感器被冻结,导致探测数据的缺测。基 于单片机的强大功能,文章设计制作了一种可对风向风速进行自动加热的防冻装置,整个装置 以单片机为核心控制器,主要包括单片机控制电路、继电器驱动电路、温度采集电路,电热丝控 制电路…

多线程代码设计模式之单例模式

目录 设计模式引入 饿汉模式 懒汉模式 单例模式总结 设计模式引入 1.1.什么是设计模式 &#xff08;1&#xff09;设计模式就是一种代码的套用模板。例如&#xff1a;一类题型的步骤分别有哪些&#xff0c;是可以直接套用的。 &#xff08;2&#xff09;像棋谱&#xff…

代码随想录算法训练营DAY17|C++二叉树Part.4|110.平衡二叉树、257.二叉树的所有路径、404.左叶子之和

文章目录 110.平衡二叉树思路伪代码CPP代码 257.二叉树的所有路径思路伪代码实现CPP代码 404.左叶子之和思路伪代码CPP代码 110.平衡二叉树 力扣题目链接 文章讲解&#xff1a;110.平衡二叉树 视频讲解&#xff1a;后序遍历求高度&#xff0c;高度判断是否平衡 | LeetCode&…

后端返回二进制,前段导出excel

axios({method: post,url: URL,responseType: blob,}).then(async res > {let blob new Blob([res.data], { type: application/vnd.ms-excel;charsetutf-8 });let href window.URL.createObjectURL(blob); //创建下载的链接const link document.createElement(a);link.h…

lua学习笔记6(经典问题输出99乘法表)

print("************for循环的99乘法表*************") for i 1, 9 dolocal line "" -- 创建一个局部变量来累积每行的输出--local 是一个关键字&#xff0c;用于声明一个局部变量。for j 1, i doline line .. j .. "*" .. i .. ""…

电脑桌面上表格不见了怎么找回?这5个方法不要错过

在日常的办公和学习中&#xff0c;电脑桌面上的各种文件、文件夹和表格等无疑是我们较为频繁使用的资源。然而&#xff0c;有时我们可能会因为一些操作失误或者电脑问题&#xff0c;突然发现桌面上的某个表格文件神秘失踪了。面对这种情况&#xff0c;很多人可能会感到焦虑和不…

[WIP]Sora相关工作汇总VQGAN、MAGVIT、VideoPoet

视觉任务相对语言任务种类较多(detection, grounding, etc.)、粒度不同 (object-level, patch-level, pixel-level, etc.)&#xff0c;且部分任务差异较大&#xff0c;利用Tokenizer核心则为如何把其他模态映射到language space&#xff0c;并能让语言模型更好理解不同的视觉任…

Python-VBA函数基础知识-001

一、函数的定义&#xff1a; 函数(Function)是一段可重复使用的代码块&#xff0c;用于执行特定的任务或计算&#xff0c;并可以接受输入参数和返回输出结果。函数可以将复杂的问题分解为更小的子问题&#xff0c;提高代码的可读性和可维护性。 二、函数的组成&#xff1a; 在…

Spring Boot集成JWT快速入门demo

1.JWT是什么&#xff1f; JWT&#xff0c;英文全称JSON Web Token&#xff1a;JSON网络令牌。为了在网络应用环境间传递声明而制定的一种基于JSON的开放标准(RFC 7519)。这个规范允许我们使用JWT在客户端和服务端之间传递安全可靠的信息。JWT是一个轻便的安全跨平台传输格式&am…

前端零基础学习web3开发

目录 1 钱包 2 发起交易 3 出块 4 块高 5 矿工 6 Gas费 这一节&#xff0c;我们不说让人神往的比特币&#xff0c;不说自己会不会利用这个虚拟的货币来发财&#xff0c;也不说那些模模糊糊的知识&#xff0c;什么去中心化啦&#xff0c;什么奇妙的加密啦&#xff0c;我们…

《青少年成长管理2024》024 “成长七要素之四:知识”1/4

《青少年成长管理2024》024 “成长七要素之四&#xff1a;知识”1/4 一、什么是知识二、知识的分类&#xff08;一&#xff09;知识按学科进行分类&#xff08;二&#xff09;知识按用途进行分类&#xff08;三&#xff09;知识按照和职业的关系进行分类&#xff08;四&#xf…

AI 驱动强大是视频转换处理软件

由 AI 驱动的视频工具包。 增强、转换、录制和编辑视频AI 驱动的顶级视频工具包。 不论是老旧、低质、噪声或模糊的影片/图像&#xff0c;都能升级至 4K&#xff0c;稳定抖动的影片&#xff0c;提升帧率至 120/240fps&#xff0c;并能以全面 GPU 加速进行转换、压缩、录制和编辑…

盘点那些好用的SAP FIORI App (四)-应收账期报告

这个App的ID是IDCNAR, 其实也是一个T-Code, 也就是说&#xff0c;不光在FIORI app里面可以使用&#xff0c;在SAP GUI里面也是存在的&#xff0c;这个就属于我另一篇里面提到的&#xff0c;GUI和FIORI都可以使用的功能&#xff0c;但是前提是S4 HANA平台 操作的界面非常简单&am…

LightGBM。决策树算法。直方图的算法。

目录 LightGBM。 决策树算法。 直方图的算法。 推荐系统可以根据用户挖掘有价值的信息偏好,因此它被广泛应用于各个行业。但是,推荐系统的性能通常受到数据稀疏性问题的影响,并且LightGBM可以在一定程度上缓解数据稀疏性带来的影响。 为此,提出了一种基于LightGBM和dee…