课时91:抽象类与接口区别

简介: 课时91探讨了抽象类与接口的区别,这是常见的面试题。尽管从JDK 1.8开始接口可以定义Default或Static方法,两者在定义和使用上仍有明显差异。抽象类可通过`extends`继承,而接口用`implements`实现,且一个类只能继承一个抽象类,却可实现多个接口。优先考虑接口可避免单继承局限,并利于项目整体设计。抽象类和接口各有应用场景,理解其区别对面向对象编程至关重要。

课时91:抽象类与接口区别

摘要:本文内容是抽象类与接口的区别,这是一道面试题。

 

在实际的开发之中可以发现抽象类和接口的定义形式是非常相似的,这一点从 JDK 1.8 开始实际上就特别的明显了,因为JDK1.8里面接口也可以定义 Default 或 Static 方法了,但是这两者依然是有着明显的定义区别与使用区别的。


No.

区别

抽象类

接口

1

定义关键字

Abstract Class  抽象类名称{}

Interface 接口名称{}

2

组成

构造、普通方法、静态方法、全局常量、普通成员、Static方法

抽象方法、全局常量、普通方法、 Static方法、

3

权限

可以使用各种权限定义

只能够使用Public

4

子类使用

子类通过Extends关键字可以继承一个抽象类

子类使用Implement 关键字

5

两者关系

抽象类可以实现若干个接口

接口不允许继承抽象类,但是允许继承多个接口。

6

使用

1.抽象类或接口必须定义子类;

2.子类一定要覆写抽象类或接口中的全部抽象方法;

3.通过子类的向上转型实现抽象类或接口对象实例化。

当抽象类和接口都可以使用的情况下优先要考虑接口,因为接口可以避免子类的单继承局限。

另外从一个正常的设计角度而言,也需要先从接口进来项目的整体设计。


现在,我们来探讨一个类比过程。首先,我们提及“动物”这一概念,并询问林强和郭仁义是否属于动物范畴。显然,这是一个分类问题。进一步地,我们需要理解郭仁义、林强与小强之间的关系。

林强作为哺乳类动物的代表是明确的。而小强则属于卵生动物类别。


这里,“动物”是一个广义的标准,其下又可细分为更具体的标准,如哺乳动物与卵生动物,这类似于接口继承的概念。如果我们向某人请求一个哺乳动物,他不太可能给我们一只鸡,因为鸡不属于哺乳动物,而可能给予我们一只狗,因为狗确实是哺乳动物的一种。同样,若要求一个卵生动物,可能会得到小强或鸭子等。


在哺乳动物这一大类中,人类是其中的一种。若我们在地面上看到四肢着地且汪汪叫的生物,很容易判断那是狗。但狗并非一个绝对具体的概念,因为它还包含了许多品种。因此,狗也可以被视为一个相对宽泛的标准,同时它符合更广泛的“动物”标准。再来看学生与人的关系,学生是人的一个更加细分、具体的概念。


通过这一过程,我们可以发现,在设计过程中,接口处于首要位置。随后才是抽象类,最后是普通类。对于初学者而言,建议先简化处理,直接使用接口和子类建立关系,因为抽象类的灵活运用需要一定的项目经验积累。


最后需要强调的是,类的设计是整个设计过程中的最底层、也是最终的一环。而接口和抽象类则是设计的起点和基础。对于这一概念,我们必须有清晰的认识。 image.png

相关文章
|
存储 Cloud Native Linux
QtCreator中三种不同编译版本 debug、release、profile 的区别
QtCreator中三种不同编译版本 debug、release、profile 的区别
|
7月前
|
存储 监控 安全
如何排查常见的 Windows 应用程序错误和崩溃
本文介绍了如何通过事件日志分析来诊断Windows应用程序错误和崩溃的根本原因。文章首先解释了应用错误的表现形式及常见事件ID(如1000、1001等),并分析了导致崩溃的原因,包括硬件问题(如存储不足、外部因素)和软件问题(如编码错误、数据损坏、.NET Framework兼容性)。接着,提供了几种故障排除方法,例如运行系统文件检查器(SFC)、执行干净启动、检查更新以及重新安装.NET Framework。最后,探讨了使用日志管理工具(如EventLog Analyzer)集中分析崩溃事件的功能,包括预置报表、时间轴分析、实时警报和自动化响应,帮助管理员高效解决应用问题。
732 1
|
机器学习/深度学习 人工智能 自然语言处理
什么是多层感知器(MLP)?
【8月更文挑战第23天】
1975 0
|
10月前
|
存储 缓存 监控
后端性能优化:从理论到实践
在数字化时代,后端服务的性能直接影响着用户体验和业务效率。本文将深入探讨后端性能优化的重要性,分析常见的性能瓶颈,并提出一系列切实可行的优化策略。我们将从代码层面、数据库管理、缓存机制以及系统架构设计等多个维度出发,结合具体案例,详细阐述如何通过技术手段提升后端服务的响应速度和处理能力。此外,文章还将介绍一些先进的监控工具和方法,帮助开发者及时发现并解决性能问题。无论是初创公司还是大型企业,本文提供的策略都有助于构建更加高效、稳定的后端服务体系。
372 3
|
12月前
|
运维 NoSQL 前端开发
介绍一下Redis的优缺点
【10月更文挑战第19天】介绍一下Redis的优缺点
|
存储 缓存 关系型数据库
【MySQL调优】如何进行MySQL调优?一篇文章就够了!
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
【MySQL调优】如何进行MySQL调优?一篇文章就够了!
|
12月前
|
缓存 监控 Java
内存泄漏:深入理解、检测与解决
【10月更文挑战第19天】内存泄漏:深入理解、检测与解决
806 0
|
机器学习/深度学习 人工智能 算法
【专家系统】系统地掌握专家系统的基本概念、技术原理、实现方法以及应用实践。
专家系统是一种人工智能程序,它利用专家知识和推理能力来解决特定领域中的复杂问题,系统地掌握专家系统的基本概念、技术原理、实现方法以及应用实践。
1229 1
|
搜索推荐
九大排序算法时间复杂度、空间复杂度、稳定性
九大排序算法的时间复杂度、空间复杂度和稳定性,提供了对各种排序方法效率和特性的比较分析。
781 1
|
存储 监控 Linux
select/poll/epoll优缺点及应用场景
select/poll/epoll优缺点及应用场景
390 1