Java编程中必须掌握的抽象类和接口

news2025/1/10 10:20:51

抽象类与接口是J--a中两个重要的概念,都用于实现多态性和代码重用。在本文中,将会介绍这两个概念的特点以及如何使用它们来实现继承父类同时实现接口,还有接口的多继承。

老规矩,思维导图我已经整理好放在文末,需要自取哈

抽象类

J--a中的抽象类是一种不能直接实例化的类,只能被其他类继承。抽象类通常包含一些抽象方法,这些方法没有具体实现,需要在子类中实现。抽象类中还可以包含具有具体实现的普通方法。

抽象类的定义方式:

public abstract class A----l
{  public abstract void eat(); // 抽象方法 
   public void sleep()
     {  
        System.out.println("A----l is sleeping"); 
      }
}

上述代码定义了一个抽象类A----l,其中包含了一个抽象方法eat(),以及一个具有具体实现的方法sleep()

当我们创建一个继承自抽象类的子类时,必须实现所有抽象方法。例如:

public class Dog extends A----l {
    @Override
    public void eat() {
        System.out.println("Dog is eating");
    }
}

上述代码定义了一个继承自A----l的子类Dog,并实现了eat()方法。因为eat()方法在父类中是抽象的,所以子类必须实现。

接口

J--a中的接口是一种包含抽象方法和常量的类型。接口没有具体的实现,只定义了方法的签名。类可以实现一个或多个接口,从而获得接口中定义的方法。

接口的定义方式:

public inte---ce A----l {
    void eat(); // 抽象方法
    void sleep();
}

上述代码定义了一个接口A----l,其中包含了两个抽象方法eat()sleep()

当我们创建一个实现了某个接口的类时,必须实现所有接口中定义的方法。例如:

public class Dog implements A----l {
    @Override
    public void eat() {
        System.out.println("Dog is eating");
    }

    @Override
    public void sleep() {
        System.out.println("Dog is sleeping");
    }
}

上述代码定义了一个实现了A----l接口的类Dog,并实现了接口中定义的两个方法。

继承父类同时实现接口

J--a中的类可以同时继承一个父类并实现一个或多个接口。这使得类可以获得父类和接口中定义的属性和方法。例如:

public class Husky extends Dog implements A----l {
    @Override
    public void sleep() {
        System.out.println("Husky is sleeping");
    }
}

上述代码定义了一个同时继承自Dog类和实现了A----l接口的子类Husky。子类需要实现所有接口中定义的方法,同时也可以覆盖父类中的方法。

接口的多继承

J--a中的接口可以通过extends关键字实现多继承。当一个接口继承自另外一个或多个接口时,它会包含所有被继承接口中定义的方法和常量。例如:

public inte---ce Mammal extends A----l {
    void run();
}

public class Dog implements Mammal {
    @Override
    public void eat() {
        System.out.println("Dog is eating");
    }

    @Override
    public void sleep() {
        System.out.println("Dog is sleeping");
    }

    @Override
    public void run() {
        System.out.println("Dog is running");
    }
}

上述代码定义了一个接口Mammal,继承自A----l接口,并添加了一个新的抽象方法run()Dog类实现了Mammal接口,因此必须实现eat()sleep()run()三个方法。

在使用接口时需要注意,如果一个类同时实现了两个具有相同方法名的接口,那么子类必须覆盖这个方法并实现自己的逻辑。

 

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

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

相关文章

【ARM AMBA AXI 入门 1 - AXI 握手协议】

文章目录 1.1 AXI 双向握手机制简介1.1.1 信号列表1.1.2 双向握手目的1.1.3 握手过程 1.2 数据通路的握手要求1.2.1 读数据通路1.2.2 读地址通路1.2.3 写数据通路1.2.4 写地址通路1.2.5 写回复通路1.2.6 全信号 1.3 不同数据通路间的约束关系1.3.1 读操作约束关系1.3.2 写操作约…

怎么将pdf文件免费转为扫描件

推荐两个工具,也算是给自己记一下 1、手机:扫描全能王APP 太好使了,可以直接拍照并转换为扫描件 不开会员的话会出现水印,因为我都是自己用或者交作业就没开 支持读取相册,一次一张、多张都可以 如果不想要水印也…

Grafana 如何监控容器指标(五)

Grafana 如何监控容器指标(五) 1、添加cadvisor CAdvisor 是用于收集有关我们容器信息的常用工具。它是普罗米修斯和格拉法纳用来抓取信息和可视化图表、图表、时间序列和其他各种形式的信息的代理人。CAdvisor从我们的容器中收集各种指标,这些信息被普罗米修斯刮擦…

SQL了解之复制(二)

(续)从另一个master初始化slave 前面讨论的假设你是新安装的master和slave,所以,slave与master有相同的数据。但是,大多数情况却不是这样的,例如,你的master可能已经运行很久了&#xf…

Pads和AD画图哪个更好?

Mentor Pads和Altium Designer(简称:AD)是两种常用的电子设计软件,用于PCB设计,它们拥有各自的优势及适用场景,但如何根据项目来选择工具?下面将比对Pads和AD在不同方面的比较,希望对…

chatgpt赋能python:Python安装包制作入门教程

Python 安装包制作入门教程 Python 作为一门简单易学且适用范围广的编程语言,不仅可以运行在各种操作系统上,还能够通过制作安装包方便地分享给其他人使用。本文将介绍如何使用 Python 的一些工具来制作安装包,以帮助 Python 开发者更加便捷…

VFP下载公众号消息图片,小白入门DAY2

封面张终于放正了。 VFP接收到的消息如下 <xml><ToUserName><![CDATA[gh_63145a34e897]]></ToUserName> <FromUserName><![CDATA[oljsK6OgHA9ftJxuCUWg7cFylj6Y]]></FromUserName> <CreateTime>1685926602</CreateTime>…

设置float后,按钮遇上position: relative点击失效

1 问题&#xff1a;设置button浮动到右边之后&#xff0c;button上的onClick事件无法触发 "点击"按钮点不了 2 原因&#xff1a;button浮动到右边之后&#xff0c;下面的div填补上来&#xff0c;但是下面的div设置了position: relative&#xff0c;结果下面的div直接…

“AI Earth”人工智能创新挑战赛:助力精准气象和海洋预测Baseline[3]:TCNN+RNN模型、SA-ConvLSTM模型

【机器学习入门与实践】入门必看系列,含数据挖掘项目实战:模型融合、特征优化、特征降维、探索性分析等,实战带你掌握机器学习数据挖掘 专栏详细介绍:【机器学习入门与实践】合集入门必看系列,含数据挖掘项目实战:数据融合、特征优化、特征降维、探索性分析等,实战带你掌…

ChatGPT 创业:如何用人工智能 AI 开一家赚钱的公司

这是一篇演示如何使用 ChatGPT prompt &#xff08;提示词&#xff09;的文章。 在了解 ChatGPT 的文案写作能力后&#xff0c;我产生了一个念头&#xff0c;如果让它来写一篇命题作文&#xff0c;会是怎样&#xff1f; Prompt 提示词&#xff0c;和人工智能 AI 对话中一个重要…

产品经理基础能力篇丨认识 ER 模型

最近我在跟其他产品经理交流的时候&#xff0c;总能听到类似这样的话&#xff1a;“其实产品经理的基础能力都差不多&#xff0c;区别主要还是行业经验、对业务的理解能力、规划能力以及项目管理能力等等”&#xff0c;对此我是比较认可的。那么&#xff0c;产品经理的基础能力…

38种未授权访问漏洞总结(1)

本次复现,我们使用的是Vulhub里面的环境 地址:Vulhub - Docker-Compose file for vulnerability environment 安装按着他的来就行了,一般没有问题 安装之后进入目录开启环境就好了 目录 1. ActiveMQ 未授权访问 1. ActiveMQ 反序列化漏洞 (CVE-2015-5254)

深入浅出 Apache DolpinScheduler 补数功能

点击蓝字&#xff0c;关注我们&#x1f53c; 引言 大家好&#xff0c;我叫侯世涛&#xff0c;是个人开发者&#xff0c;也是 Apache DolphinScheduler 社区的贡献者&#xff0c;目前在社区参与开发已经有两年时间&#xff0c;欢迎大家跟我交流。本次分享将深入探讨 DolphinSche…

Linux教程——Linux桌面环境(桌面系统)大比拼【附带优缺点】

早期的 Linux 系统都是不带界面的&#xff0c;只能通过命令来管理&#xff0c;比如运行程序、编辑文档、删除文件等。所以&#xff0c;要想熟练使用 Linux&#xff0c;就必须记忆很多命令。 后来随着 Windows 的普及&#xff0c;计算机界面变得越来越漂亮&#xff0c;点点鼠标…

【Difussion Model】扩散模型的理解和编程实现

目录 理论框架text-to-imgaedecodergeneration modelclip的原理 FID指标&#xff1a;评估图像生成的好坏数学原理traininginference 图像生成模型的本质最大似然估计 正式推导sample 带来随机性从一次到位到N次到位 理论 框架 不断的进行去噪&#xff0c;并且在这个过程中&am…

云原生Docker镜像管理

docker是什么&#xff1f; docker是一个go语言开发的应用容器引擎。 docker的作用&#xff1f; ①运行容器里的应用&#xff1b; ②docker是用来管理容器和镜像的一种工具。 #容器 与 虚拟机 的区别&#xff1f; 容器虚拟机所有容器共享宿主机内核每个虚拟机都有独立的操…

android framework面试经验分享

hi&#xff0c;粉丝朋友们&#xff01; 大家好&#xff01;近来有很多学员粉丝都经常问framework面试的一些经验。 更多framework干货知识手把手教学 Log.i("千里马qq群"&#xff0c;“422901085”);简历书写建议 1、写上自己突出重点的framework一些模块&#xf…

【微信小程序开发】第 6 节 - 小程序的宿主环境

欢迎来到博主 Apeiron 的博客&#xff0c;祝您旅程愉快 &#xff01; 时止则止&#xff0c;时行则行。动静不失其时&#xff0c;其道光明。 目录 1、缘起 2、宿主环境简介 3、小程序的宿主环境 4、小程序宿主环境包含的内容 4.1、通信模型 4.1.1 通信的主体 4.1.2 小程…

【服务器】远程ERP财务软件

文章目录 前言1.本地访问简介2. cpolar内网穿透3. 公网远程访问4. 固定公网地址 前言 用友畅捷通T适用于异地多组织、多机构对企业财务汇总的管理需求&#xff1b;全面支持企业对远程仓库、异地办事处的管理需求&#xff1b;全面满足企业财务业务一体化管理需求。企业一般将其…

​蚂蚁集团自动化混沌工程 ChaosMeta 正式开源

ChaosMeta 介绍 ChaosMeta 是一款面向云原生、自动化演练而设计的混沌工程平台。它是蚂蚁集团内部混沌工程平台 XMonkey 的对外开源版本&#xff0c;凝聚了蚂蚁集团在公司级大规模红蓝攻防演练实践中多年积累的方法论、技术能力以及产品能力。 经过公司内部多年复杂故障演练场…