news 2026/2/24 19:33:43

Java:abstract

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java:abstract

在 Java 中,abstract 是一个关键字,用于修饰类或方法,表示“抽象的”。它主要用于定义‌抽象类‌和‌抽象方法‌,是面向对象编程中实现抽象和多态的重要机制。
一、抽象类(Abstract Class)

抽象类是用 abstract 关键字修饰的类。它不能被直接实例化,只能被其他类继承。抽象类通常作为父类,定义子类共有的属性和行为,并可以包含抽象方法。
特点:

‌不能实例化‌:抽象类不能使用 new 关键字创建对象。
‌可以包含抽象方法和非抽象方法‌:抽象方法没有方法体,必须由子类实现;非抽象方法可以有具体实现。
‌可以包含构造器‌:虽然不能实例化,但抽象类可以有构造器,供子类调用
‌子类必须实现抽象方法‌:如果一个子类继承了抽象类,而没有实现所有抽象方法,则该子类也必须声明为抽象类。

示例:
abstract class Animal {
public abstract void makeSound(); // 抽象方法
public void sleep() { // 普通方法
System.out.println("Animal is sleeping");
}
}

class Dog extends Animal {
public void makeSound() {
System.out.println("Dog barks");
}
}

二、抽象方法(Abstract Method)

抽象方法是用 abstract 关键字修饰的方法,它没有方法体,仅声明方法签名。抽象方法必须在抽象类中定义,子类必须实现这些方法。
特点:

‌没有方法体‌:抽象方法以分号结尾,不包含实现代码。
‌必须在抽象类中定义‌:不能在普通类中定义抽象方法。
‌不能使用 private、static、final 修饰‌:因为这些修饰符与抽象方法的重写机制冲突
‌子类必须实现‌:如果子类不实现抽象方法,则该子类也必须声明为抽象类。

示例:
abstract class Shape {
public abstract double area(); // 抽象方法
}

class Circle extends Shape {
private double radius;

public Circle(double radius) {
this.radius = radius;
}

public double area() {
return Math.PI * radius * radius;
}
}

三、抽象类与接口的区别

特性抽象类(Abstract Class)接口(Interface)
继承单继承(一个类只能继承一个抽象类)多实现(一个类可以实现多个接口)
方法可包含抽象方法和具体方法Java 8 前只能有抽象方法,之后可包含默认方法和静态方法
字段可包含任意类型的字段(普通、静态、常量)只能包含 public static final 常量
构造器有构造器无构造器
设计目的表示“是一个”关系(is-a)表示“具有一种能力”(can-do)


四、使用场景

抽象类适用于以下情况:

  • 需要定义一组相关类的模板。
  • 共享代码,同时保留部分方法由子类实现。
  • 定义一个通用类结构,强制子类实现某些行为。

总结

abstract 关键字在 Java 中用于定义抽象类和抽象方法,其核心目的是‌定义规范、隐藏实现、支持多态‌。抽象类不能被实例化,必须由子类继承并实现其中的抽象方法。通过这种方式,Java 实现了代码的复用性和灵活性,是面向对象编程的重要组成部分。

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

学网络安全对学历有什么要求?

想入行网络安全,学历要求是很多新手的核心顾虑,担心学历偏低会被行业拒之门外。其实网络安全是重实战,轻学历的赛道,学历并非硬性门槛,那么学网络安全对学历有什么要求?请看下文。 学网络安全对学历有什么要求? 对于…

作者头像 李华
网站建设 2026/2/21 23:31:56

基于SpringBoot的人力资源管理系统的设计与实现

文章目录 详细视频演示项目介绍技术介绍功能介绍核心代码系统效果图源码获取 详细视频演示 文章底部名片,获取项目的完整演示视频,免费解答技术疑问 项目介绍 基于 SpringBoot 的人力资源管理系统是一款聚焦企业人力资源全流程数字化管理的平台&#x…

作者头像 李华
网站建设 2026/2/17 3:10:37

Spring+asyncTool:实现复杂任务的优雅编排与高效执行

一、集成到 Spring Boot 1. 添加依赖 在项目的 pom.xml 文件中添加 asyncTool 的依赖&#xff1a; <dependency><groupId>com.jd.platform</groupId><artifactId>asyncTool</artifactId><version>版本号</version> </dependency…

作者头像 李华
网站建设 2026/2/21 18:16:37

限时抢购-服务器服务器-云服务器

限时抢购云服务器的优势 限时抢购云服务器通常伴随着大幅度的价格折扣&#xff0c;用户可以在特定时间段内以远低于常规价格的成本获取高性能计算资源。这种促销模式适合预算有限但需要快速部署业务的中小企业和个人开发者。 云服务提供商通过限时抢购清理闲置资源或推广新产…

作者头像 李华
网站建设 2026/2/23 9:24:31

使用 Certbot 在腾讯云生成 Let’s Encrypt 通配符证书完整教程

本文详细记录了在腾讯云环境下&#xff0c;通过 Certbot 获取和续期 Let’s Encrypt 通配符证书的完整流程&#xff0c;包括 DNS API 配置、通配符证书申请、常见错误及解决方案。 1️⃣ 安装 Certbot 在 Ubuntu 系统中&#xff0c;推荐使用官方 PPA&#xff1a; sudo apt up…

作者头像 李华
网站建设 2026/1/30 13:59:20

兰亭妙微实战:B 端数据可视化设计,让枯燥数据变身业务决策支撑

B端产品多涉及大量业务数据&#xff0c;如销售数据、运维数据、财务报表等&#xff0c;数据可视化设计的核心是将枯燥、复杂的数据转化为直观、易懂的图形&#xff0c;助力用户快速捕捉关键信息、做出业务决策&#xff0c;而非追求视觉炫酷。 设计前需明确数据可视化的核心目标…

作者头像 李华