news 2026/5/20 4:30:47

JAVA之路(11)——抽象类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
JAVA之路(11)——抽象类

当父类的某些方法需要声明,但又不确定如何实现时,就将其声明为抽象方法,包含抽象方法的类就是抽象类

1. 抽象方法

abstract修饰的方法,只有方法声明,没有方法体({}),语法格式:

访问修饰符 abstract 返回类型 方法名(参数列表);

2. 抽象类

abstract修饰的类,语法格式:

访问修饰符 abstract class 类名 { // 类的成员(属性、方法、构造器等) }

3. 抽象类的使用规则

  • 抽象类不能被实例化:无法直接new Animal()创建对象,只能作为父类被继承。
  • 抽象类可以没有抽象方法:但包含抽象方法的类必须声明为抽象类。
  • abstract只能修饰类和方法:不能修饰属性、构造器等其他元素。
  • 抽象方法不能有方法体abstract void aaa(){}是语法错误。
  • 抽象方法的修饰限制:不能用privatefinalstatic修饰,因为这些关键字与重写冲突:
    • private:子类无法访问,无法重写
    • final:方法不能被重写
    • static:方法属于类,不依赖对象,无法重写
    • 如果一个类继承了抽象类,必须实现抽象类的所有抽象方法,除非这个子类自己也声明为abstract类。
// 抽象父类 abstract class Animal { public abstract void cry(); } // 普通子类:必须实现所有抽象方法 class Cat extends Animal { @Override public void cry() { System.out.println("小猫喵喵叫"); } } // 抽象子类:可以不实现,继续留给子类实现 abstract class Dog extends Animal {}

抽象类本质还是类,可以包含任意成员

  • 非抽象方法(普通方法)
  • 构造器(用于子类调用super()初始化)
  • 静态属性、静态方法
  • 普通属性等

4. 抽象类的应用:模版设计模式

抽象类是模板设计模式的核心实现:抽象类作为多个子类的通用模板,封装确定的通用逻辑,将不确定的可变逻辑声明为抽象方法,交给子类实现。

4.1 举例

模板抽象类(固定流程 + 可变任务)

// 抽象模板类:封装固定的计时流程,任务逻辑交给子类实现 abstract class TaskTemplate { // 固定流程:统计任务耗时(通用逻辑,子类不可修改) public final void calculateTime() { long start = System.currentTimeMillis(); job(); // 调用抽象方法:子类实现具体任务 long end = System.currentTimeMillis(); System.out.println("任务耗时:" + (end - start) + "ms"); } // 抽象方法:子类实现具体任务(可变逻辑) public abstract void job(); }

子类实现(只写任务逻辑,复用计时流程)

// 子类1:数组排序任务 class SortTask extends TaskTemplate { @Override public void job() { // 具体排序逻辑(省略) int[] arr = new int[100000]; for (int i = 0; i < arr.length; i++) { arr[i] = (int) (Math.random() * 100000); } Arrays.sort(arr); } } // 子类2:循环打印任务 class PrintTask extends TaskTemplate { @Override public void job() { // 具体打印逻辑 for (int i = 0; i < 10000; i++) { System.out.print(""); } } }

测试类

public class TestTemplate { public static void main(String[] args) { TaskTemplate sortTask = new SortTask(); sortTask.calculateTime(); // 自动统计排序耗时 TaskTemplate printTask = new PrintTask(); printTask.calculateTime(); // 自动统计打印耗时 } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/20 4:30:41

猫抓:网页资源下载终极解决方案,让媒体获取从未如此简单

猫抓&#xff1a;网页资源下载终极解决方案&#xff0c;让媒体获取从未如此简单 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字时代&#x…

作者头像 李华
网站建设 2026/5/20 4:30:46

Navicat Premium 17.x 试用期重置技术方案

Navicat Premium 17.x 试用期重置技术方案 【免费下载链接】navicat_reset_mac navicat mac版无限重置试用期脚本 Navicat Mac Version Unlimited Trial Reset Script 项目地址: https://gitcode.com/gh_mirrors/na/navicat_reset_mac 核心关键词&#xff1a;Navicat Pr…

作者头像 李华
网站建设 2026/5/20 4:30:38

如何5分钟搞定GB/T 7714参考文献格式:中国学者的学术写作救星

如何5分钟搞定GB/T 7714参考文献格式&#xff1a;中国学者的学术写作救星 【免费下载链接】gbt7714-bibtex-style GB/T 7714-2015 BibTeX Style 项目地址: https://gitcode.com/gh_mirrors/gb/gbt7714-bibtex-style 深夜的实验室里&#xff0c;论文截稿的钟声即将敲响。…

作者头像 李华
网站建设 2026/4/18 8:00:56

书匠策AI:论文写作界的“智能导航仪”,引领期刊论文创作新风尚

在学术的浩瀚海洋中&#xff0c;每一位探索者都渴望拥有一盏明灯&#xff0c;照亮前行的道路&#xff0c;让论文写作不再迷茫。今天&#xff0c;就让我带你走进书匠策AI的世界&#xff0c;这不仅仅是一个工具&#xff0c;更是你论文写作路上的“智能导航仪”&#xff0c;特别是…

作者头像 李华