Java接口和抽象类的区别

embedded/2024/9/25 12:59:56/

文章目录

  • 前言
  • 两者语法上的区别
    • 接口
    • 抽象类
  • 两者思想上的区别
    • 接口
    • 抽象类


前言

最近在刷八股的时候看到 接口和抽象类的区别 这个问题,答案就是一些如抽象类使用abstract声明、有抽象方法,接口使用interface声明、一个类可以实现多个接口等。
但是想了一下如果在面试的时候被问这个问题时,面试官是只希望听到这些语法上的区别吗?当然如果面试的是实习生,这么回答也是可以的。但如果面试的是三四年工作经验的呢,恐怕是想听到的是两者更加本质上的区别。

两者语法上的区别

先说一下语法上的区别

接口

  • 声明:使用 interface 关键字来声明一个接口。
  • 成员:默认情况下,接口中的方法是公共的(public),并且是抽象的(即没有方法体)。从Java 8开始,接口可以包含默认方法(default)和静态方法(static)。
  • 实现:一个类可以实现多个接口。
  • 访问修饰符:接口中的方法默认为 public,并且不允许使用其他修饰符(如 private, protected)

抽象类

  • 声明:使用 abstract 关键字来声明一个类。
  • 成员:可以包含抽象方法(没有实现的方法)、具体方法(实现了的方法)、构造函数、初始化块、静态方法和静态初始化块等。
  • 继承:一个类只能继承一个抽象类。
  • 访问修饰符:抽象类的方法可以有不同的访问修饰符(如 public, protected, private)。

两者思想上的区别

接口

自上而下,在定义接口的时候不需要考虑子类实现,子类在实现时必须遵守接口的规范

抽象类

自下而上,在定义抽象类时需要考虑子类中的共性,将共性抽取出来之后就变成了抽象类
抽象类的思想和设计模式中的模版方法模式思想不谋而合,因此模板方法模式通常使用抽象类来实现。



http://www.ppmy.cn/embedded/116618.html

相关文章

qt相关面试题

qt中的文件流和数据流区别qt中的show和exec区别qt多线程使用那些方法QString与基本数据类型如何转换qt如何保证多线程安全qt中事件与信号的区别qt中的connect函数的连接方式信号与槽有哪些用法QT的事件过滤器同步和异步的网络连接区别qt网络模块中有哪些类来执行异步操作qt如何…

免费下载6组简历模板,让HR一眼相中你!

简历是求职者向招聘单位展示自我的重要工具,选择一份高质量的简历模板免费下载,能够提升面试机会并留下深刻印象。优秀的简历模板需具备清晰的信息结构、出色的视觉效果及合理的排版布局。简历的配色可以凸显求职者的个性,而有逻辑性的排版则…

第一弹:llama.cpp编译

1.编译llama.cpp命令行(电脑版本); 2.交叉编译安卓命令行版本。 一、Llama.cpp是什么? 二、Llama.cpp编译 首先我们尝试编译llama.cpp. 2.1 下载llama.cpp 项目的github地址: https://github.com/ggerganov/llama…

中电金信:源启智能视觉分析系统~助力各行业破局升级,释放新质生产力

作为人工智能与计算机视觉的交叉范畴,智能视觉模仿人类视觉机能,来对各种形式的视觉输入予以处理、理解以及决策。当下,智能视觉已然发展为应用广泛、市场覆盖面大且形式多元的产业方向,获得了国家政策的强力支持。数字化时代搭台…

Tomcat窗口运行修改窗口标题显示项目日期时间

1、修改配置文件catalina.bat文件 在Tomcat路径 bin文件夹下 set TITLETomcat.xxx.Server [%DATE% %TIME%] 显示:Tomcat.xxx,Server [2024/09.18 周三 12:01:30]

【YashanDB知识库】查询YashanDB表空间使用率

本文转自YashanDB官网,具体内容请见https://www.yashandb.com/newsinfo/7369203.html?templateId1718516 【问题分类】功能使用 【关键字】表空间,使用率 【问题描述】YashanDB使用过程中,如何查询表空间的使用率 【问题原因分析】需要查…

实战OpenCV之图像滤波

基础入门 图像滤波是数字图像处理中一种非常重要的技术,主要用于图像噪声去除、图像平滑、突出图像特征,或者进行图像风格的转换。它通过数学运算对图像中的像素值进行修改,以达到特定的处理目的。图像滤波可以分为两大类,分别为&…

MySQL—存储过程详解

基本介绍 存储过程和函数是数据库中预先编译并存储的一组SQL语句集合。它们的主要目的是提高代码的复用性、减少数据传输、简化业务逻辑处理,并且一旦编译成功,可以永久有效。 存储过程和函数的好处 提高代码的复用性:存储过程和函数可以在…