【JAVA】《接口,抽象方法,抽象类 》之二 、抽象方法详解

抽象方法 详解

    • 一、接口
    • 二、抽象方法
      • 2.1、抽象方法概念
      • 2.2、抽象方法的特点:
      • 2.3、抽象方法的作用:
      • 2.4、抽象方法的应用:
      • 2.5、抽象方法的实践:
      • 2.6、使用抽象方法的注意事项
    • 三、抽象类
    • 四、开发实践

一、接口

1.1、接口的概念
1.2、接口的作用:
1.3、接口应用:
1.4、接口实践:
详情参考【java】《接口,抽象方法,抽象类 》之一 、接口详解

二、抽象方法

2.1、抽象方法概念

接口中的方法通常都是抽象方法,但自从 Java 8 开始,接口也可以包含默认方法(Default Method)和静态方法(Static Method)。抽象方法是一种没有具体实现的方法,它只有方法签名而没有方法体,需要由实现类提供具体的实现。

2.2、抽象方法的特点:

  • 没有方法体:抽象方法只有方法声明,没有方法体。
  • 必须由子类实现:抽象方法必须由子类提供具体的实现,否则子类也必须声明为抽象类。
  • 用于定义行为规范:抽象方法通常用于定义一种行为规范,告诉子类应该具备的行为。

2.3、抽象方法的作用:

  • 定义接口规范:抽象方法定义了接口或抽象类应该具备的行为,提供了一种规范约束。
  • 实现多态:通过抽象方法,不同的子类可以提供自己特定的实现,从而实现多态。

2.4、抽象方法的应用:

  • 接口定义:接口中的方法通常都是抽象方法,用于定义接口规范。
  • 抽象类:抽象类中的方法可以是抽象方法,用于提供一种行为规范,而具体的实现交由子类实现。
  • 继承:子类继承抽象类或实现接口时,必须提供抽象方法的具体实现。

2.5、抽象方法的实践:

考虑以下的示例,定义了一个 Shape 接口,其中包含一个抽象方法 calculateArea(),用于计算图形的面积。具体的图形类(如圆、矩形)必须实现该方法来提供自己的面积计算逻辑:

// 定义接口
interface Shape {
    double calculateArea(); // 计算形状的面积
}

// 实现接口
class Circle implements Shape {
    private double radius;

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

    @Override
    public double calculateArea() {
        return Math.PI * radius * radius;
    }
}

class Rectangle implements Shape {
    private double width;
    private double height;

    public Rectangle(double width, double height) {
        this.width = width;
        this.height = height;
    }

    @Override
    public double calculateArea() {
        return width * height;
    }
}

// 使用接口
public class Main {
    public static void main(String[] args) {
        Shape circle = new Circle(5);
        System.out.println("Circle area: " + circle.calculateArea());

        Shape rectangle = new Rectangle(4, 6);
        System.out.println("Rectangle area: " + rectangle.calculateArea());
    }
}

在这里插入图片描述

在上述示例中,Shape 接口定义了 calculateArea() 抽象方法,CircleRectangle 类分别实现了该方法,提供了自己的面积计算逻辑。这样,无论是圆还是矩形,都可以通过统一的方法来计算它们的面积。

2.6、使用抽象方法的注意事项

在使用抽象方法时,有几个注意事项需要考虑:

  • 抽象方法没有方法体 \color{green}{抽象方法没有方法体} 抽象方法没有方法体:抽象方法只有方法声明而没有方法体,因此在子类中必须提供具体的实现。
  • 子类必须实现抽象方法 \color{green}{子类必须实现抽象方法} 子类必须实现抽象方法:如果一个类继承了抽象类或实现了接口,并且其中包含抽象方法,那么子类必须实现这些抽象方法,除非子类自己也声明为抽象类
  • 抽象方法不能是私有的或静态的 \color{green}{抽象方法不能是私有的或静态的} 抽象方法不能是私有的或静态的:抽象方法不能是私有的(private)或静态的(static),因为它们必须被子类重写。
  • 抽象方法不能被 f i n a l 修饰 \color{green}{抽象方法不能被final修饰} 抽象方法不能被final修饰:抽象方法不能被 final 修饰,因为 final 修饰的方法不能被子类重写。
  • 抽象方法可以被覆盖为非抽象方法 \color{green}{抽象方法可以被覆盖为非抽象方法} 抽象方法可以被覆盖为非抽象方法:一个抽象类中的抽象方法可以被它的子类实现为非抽象方法。这使得抽象类可以逐步完善,逐步提供默认实现。
  • 抽象方法不能被覆盖为私有方法 \color{green}{抽象方法不能被覆盖为私有方法} 抽象方法不能被覆盖为私有方法:在 Java 9 之前,抽象方法不能被覆盖为私有方法,但可以被覆盖为默认方法或静态方法。
  • 抽象方法的可见性 \color{green}{抽象方法的可见性} 抽象方法的可见性:抽象方法的可见性必须比其所在类的可见性更低,例如,如果一个类是 public 的,那么其抽象方法必须至少是 public 的,而不能是 protected 或 private 的。
  • 接口默认方法 \color{green}{接口默认方法} 接口默认方法:Java 8 引入了接口默认方法(Default Method),它们为接口提供了具体的方法实现。实现类可以选择是否覆盖默认方法。
  • 静态方法不是抽象方法 \color{green}{静态方法不是抽象方法} 静态方法不是抽象方法:静态方法在接口中不是抽象方法,它们可以有方法体,并且不需要在实现类中被覆盖。

在编写代码时,应该根据具体的需求和设计原则来合理使用抽象方法,确保代码的清晰、可读和易于维护。

三、抽象类

如果一个类继承了抽象类或实现了接口,并且其中包含抽象方法,**那么子类必须实现这些抽象方法,除非子类自己也声明为抽象类。**下面介绍一下抽象类。
3.1、抽象类的概念
3.2、抽象类的特点:
3.3、抽象类的作用:
3.4、抽象类的应用:
3.5、抽象类的注意事项:
详情参考【JAVA】《接口,抽象方法,抽象类 》之三 、抽象类详解

四、开发实践

4.1、定义接口:
4.2、实现抽象类:
4.3、创建具体实现类:
4.4、使用示例:
4.5、调用流程:
详情参考【JAVA】《接口,抽象方法,抽象类 》之四 、开发实践

订阅我的专栏,动动小手,点点关注,随学随更~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows上基于名称快速定位文件和文件夹的免费工具Everything

在Windows上搜索文件时,使用windows上内置搜索会很慢,这里推荐使用Everything工具进行搜索。 "Everything"是Windows上一款搜索引擎,它能够基于文件名快速定位文件和文件夹位置。不像Windows内置搜索,"Everything&…

鸿蒙OS应用开发之显示图片组件6

前面学习了怎么样让图片合适的大小来显示出来,达到最佳的布局显示图片。现在来学习PixelMap图片显示。PixelMap图片是指图片解码后无压缩的位图,用于图片显示或图片处理。 由于PixelMap图片是一种无压缩的图片,比较适合图片处理,比如从网络上加载图片之后,再进行处理再显示…

企业为何选择芯片运营管理ERP?

随着科技的飞速发展和市场竞争的加剧,企业对于运营管理的需求也日益增强。在这一背景下,越来越多的企业开始选择芯片运营管理ERP(企业资源规划)系统,以提升自身的运营效率和竞争力。那么,企业为何选择芯片运营管理ERP呢? 芯片运营…

PC端封装侧边导航

PC端封装侧边导航 template <div v-if"showBox false" class"leftShow" click.stop"toggleBox"></div><div class"container" :class"{ show: showBox, fixed: fixedBox }"><div class"arrow&qu…

【时事篇-05-02】20240221 2525元存17只货币基金的具体数目测算( itertools)

背景需求&#xff1a; 前文提到存10个货币基金&#xff0c;每个投150元&#xff0c;1500元&#xff0c;每天有1分钱利息&#xff0c;10个基金就有0.1元&#xff0c;比1500元投1只货币基金0.06元&#xff0c;的收益高一点。 【时事篇-05】20240112 150元存46只货币基金-CSDN博…

投资黄金在哪里买比较好?

黄金&#xff0c;作为一种传统的避险资产&#xff0c;历来受到投资者的青睐。在全球经济波动的大背景下&#xff0c;黄金的价值愈发凸显。那么&#xff0c;投资黄金在哪里买比较好呢&#xff1f;本文将重点探讨在香港黄金平台投资黄金的优势&#xff0c;并以金田金业为例&#…

美国CFTC启用举报奖励机制!打击人工智能投资欺诈行为

最近几周&#xff0c;美国监管机构对欺诈者利用人工智能 (AI) 的说法来引诱投资者实施诈骗发出警告。掌握人工智能诈骗原始信息的个人可以匿名举报 &#xff0c;并有资格根据商品期货交易委员会 (CFTC) 和证券交易委员会 (SEC) 举报计划获得金钱奖励。CFTC 关于人工智能诈骗的咨…

2024雾锁王国服务器搭建教程,基于阿里云小白轻松上手

雾锁王国游戏服务器怎么创建&#xff1f;阿里云雾锁王国服务器搭建教程是基于计算巢服务&#xff0c;3分钟即可成功创建Enshrouded游戏服务器&#xff0c;阿里云8核32G雾锁王国专用游戏服务器90元1个月、271元3个月&#xff0c;阿里云百科aliyunbaike.com亲自整理雾锁王国服务器…

深度学习在时间序列预测的总结和未来方向分析

2023年是大语言模型和稳定扩散的一年&#xff0c;时间序列领域虽然没有那么大的成就&#xff0c;但是却有缓慢而稳定的进展。Neurips、ICML和AAAI等会议都有transformer 结构(BasisFormer、Crossformer、Inverted transformer和Patch transformer)的改进&#xff0c;还出现了将…

绿盾限制终端网络访问权限会恢复后,别的网站访问正常就是无法访问钉钉网站和下载东西

环境&#xff1a; Win10 专业版 钉钉7.5.5 绿盾7.0 问题描述&#xff1a; 绿盾限制终端网络访问权限会恢复后&#xff0c;别的网站访问正常就是无法访问钉钉网站和下载东西 解决方案&#xff1a; 排查方法 1.重置浏览器或者更换浏览器测试&#xff08;未解决&#xff09…

惠尔顿安全审计系统任意文件读取漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

K8S故障处理指南:网络问题排查思路

1. 前言 对于私有化环境&#xff0c;客户的网络架构&#xff0c;使用的云平台存在着各种差异&#xff0c;K8S网络可能会出现各种问题&#xff0c;此文着重讲解遇到此种问题的排查方法和思路&#xff0c;不会涉及相关网络底层技术描述. 环境说明 由于我们的k8s网络组件默认使…

OpenAI Sora引领AI跳舞视频新浪潮:字节跳动发布创新舞蹈视频生成框架

OpenAI的Sora已经引起广泛关注&#xff0c;预计今年AI跳舞视频将在抖音平台上大放异彩。下面将为您详细介绍一款字节跳动发布的AI视频动画框架。 技术定位&#xff1a;这款框架采用先进的diffusion技术&#xff0c;专注于生成人类舞蹈视频。它不仅能够实现人体动作和表情的迁移…

如何监控云中的盲点以及进行处理

如今&#xff0c;云采用正在增长&#xff0c;因为它具有许多优势&#xff0c;例如在需要时轻松配置新资源。另外&#xff0c;通常还有短期资金成本节省。 如今&#xff0c;云采用正在增长&#xff0c;因为它具有许多优势&#xff0c;例如在需要时轻松配置新资源。另外&#xff…

CogFixtureTool(坐标系、校正与定位)

坐标系 任何VisionPro图像都支持一组坐标空间&#xff0c;为表达特定特征的位置提供数字框架。最有用的空间是根空间和用户空间&#xff0c;根空间将点与原始获取图像中的像素相关联&#xff0c;用户空间用于获得校准和固定空间中的特征位置和测量值。 根空间 图像的根空间…

公司如何防止终端核心文件数据\资料外泄、泄漏?

如何防止电脑文件被拷贝&#xff1f; 防止电子文件泄密是一个重要的信息安全问题。 PC端地址&#xff1a; https://isite.baidu.com/site/wjz012xr/2eae091d-1b97-4276-90bc-6757c5dfedee 以下是一些建议的措施&#xff1a; 加强员工教育和培训&#xff1a;提高员工对电子文…

[ 2024春节 Flink打卡 ] -- 优化(draft)

2024&#xff0c;游子未归乡。工作需要&#xff0c;flink coding。觉知此事要躬行&#xff0c;未休&#xff0c;特记 资源配置调优内存设置 TaskManager内存模型 https://nightlies.apache.org/flink/flink-docs-release-1.18/docs/deployment/config/ TaskManager 内存模型…

不破不立,那些年错过的Python

随着OpenAI的发展&#xff0c;Python的重要性不言而喻。不知你是否和我一样&#xff0c;不知道曾经说过多少次我要学Python&#xff0c;都没有执行起来… 近期我在知识库中更新了一波Python教程&#xff0c;选取了这一篇分享给大家。 前言 很多时候我们需要让程序变成交互性的…

12 Autosar_SWS_MemoryMapping.pdf解读

AUTOSAR中MemMap_autosar memmap-CSDN博客 1、Memory Map的作用 1.1 避免RAM的浪费&#xff1a;不同类型的变量&#xff0c;为了对齐造成的空间两份&#xff1b; 1.2 特殊RAM的用途&#xff1a;比如一些变量通过位掩码来获取&#xff0c;如果map到特定RAM可以通过编译器的位掩码…

HAL STM32 HW I2C DMA + SSD1306/SH1106驱动示例

HAL STM32 HW I2C DMA SSD1306/SH1106驱动示例 &#x1f4cd;硬件I2C DMA驱动参考&#xff1a;https://blog.csdn.net/weixin_45065888/article/details/118225993 &#x1f516;本工程基于STM32F103VCT6&#xff0c;驱动程序独立&#xff0c;可以移植到任意STM32型号上使用。…