news 2026/5/28 1:05:05

java复习笔记(2)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
java复习笔记(2)




一、抽象类与抽象方法

抽象类用 abstract 关键字修饰,它不能被直接实例化(不能用 new 创建对象),核心作用是作为父类,让子类继承。抽象类里可以包含普通方法,也可以包含抽象方法——也就是只有方法声明、没有方法体的方法,比如定义一个 getArea() 方法,只声明返回值和方法名,不写具体实现。

抽象方法必须被非抽象的子类重写,子类继承抽象父类后,必须实现所有抽象方法,否则子类也得定义为抽象类。这就是“父类定规范,子类来实现”的典型体现,比如几何图形父类定义 getArea() 抽象方法,矩形、圆形子类分别实现自己的面积计算逻辑。

二、多态与数组应用

多态的核心体现是“父类引用指向子类对象”,比如 Geometry[] tuxing = new Geometry[9]; 这个数组,虽然类型是抽象父类 Geometry ,但数组里的每个元素都可以存储它的子类对象(比如 new Rect(16, 68) 、 new Circle(7) )。

我们可以通过父类数组统一管理不同子类对象,再通过循环调用重写后的 getArea() 方法,就能计算所有图形的面积总和。这种方式把不同子类的公共行为统一起来,不用为每个子类单独写一套计算逻辑,大幅提升了代码的复用性和扩展性。

三、接口与接口实现

接口用 interface 关键字定义,它是一种特殊的抽象类型,里面的方法默认是 public abstract 的(可以省略不写),变量默认是 public static final 的。接口的核心特点是:

  • 一个类可以实现多个接口,弥补了 Java 单继承的局限;
  • 实现类必须重写接口中所有的抽象方法,否则会编译报错。

比如定义 ComputerAverage 接口,声明 average() 方法,再让 SongGame 类和 School 类分别实现这个接口,用不同的逻辑计算平均值: SongGame 先排序去掉最高分最低分再求平均, School 直接对所有成绩求平均。通过接口多态,我们可以用 ComputerAverage 类型的引用,调用不同实现类的 average() 方法,得到不同的结果。

四、super 关键字与方法重写

super 关键字用来引用父类的内容,常见用法有三种:

  1. super.xxx :调用父类的成员变量;
  2. super.方法名() :调用父类的成员方法;
  3. super() :调用父类的构造方法,必须写在子类构造方法的第一行。

在方法重写中,子类可以通过 super 调用父类的方法,再在此基础上扩展逻辑。比如银行利息计算的例子,父类 Bank 定义了 computerInterest() 方法计算整年利息,子类 ConstructionBank 重写这个方法时,先通过 super.computerInterest() 获取整年利息,再额外计算零头天数的利息,最后把两部分加起来,既复用了父类的逻辑,又实现了子类的扩展需求。

五、继承与代码复用

继承是面向对象的核心特性之一,用 extends 关键字实现,子类可以继承父类的非私有成员变量和成员方法,避免重复代码。比如 ConstructionBank 和 BankOfDalian 都继承自 Bank 类,直接复用父类的 savedMoney 、 interestRate 变量和 setInterestRate() 方法,只需要重写自己的利息计算逻辑即可。

同时,Java 只支持单继承,一个类只能有一个直接父类,但可以通过实现多个接口来扩展功能,这也是接口的重要作用之一。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/28 1:03:26

如何快速搭建英雄联盟客户端工具箱:LeagueAkari完整配置指南

如何快速搭建英雄联盟客户端工具箱:LeagueAkari完整配置指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit LeagueAkari是一款基于…

作者头像 李华
网站建设 2026/5/28 1:02:21

Sumatra PDF进阶指南——自定义快捷键与高效配置

1. 为什么需要自定义Sumatra PDF快捷键? 第一次接触Sumatra PDF时,我就被它极简的设计和飞快的启动速度吸引了。但用久了发现,默认的快捷键布局并不完全符合我的工作习惯。作为一名经常需要同时处理多个PDF文档的技术写作者,我发现…

作者头像 李华
网站建设 2026/5/28 0:59:02

从Linux到SPDK:NVMe Namespace的创建、绑定与高性能存储实践

1. 从Linux原生驱动到SPDK的切换背景 NVMe SSD作为当前性能最强的存储介质之一,其性能发挥很大程度上取决于驱动层的实现方式。传统Linux内核驱动虽然稳定易用,但在高并发、低延迟场景下会存在性能瓶颈。这就是为什么越来越多的存储工程师开始关注SPDK&a…

作者头像 李华
网站建设 2026/5/28 0:58:59

RustSFQ:利用Rust所有权系统保障超导SFQ电路I/O一致性

1. RustSFQ:为超导SFQ电路设计引入编译时安全保障在数字电路设计的工具箱里,硬件描述语言(HDL)如Verilog和VHDL早已是工程师的左膀右臂。它们将复杂的电路结构抽象成代码,让设计、仿真和验证的流程得以自动化。然而&am…

作者头像 李华
网站建设 2026/5/28 0:58:10

知识图谱驱动的研究工具:从信息孤岛到智能工作流

1. 项目缘起:当通用工具遇上专业研究几年前,我还在一个数据分析团队里埋头苦干,每天的任务就是从海量的学术论文、行业报告和实验数据里,试图拼凑出某个技术趋势的完整图景。那时候,我的“兵器库”里塞满了各种所谓的“…

作者头像 李华