面试系列之抽象类和接口的区别

2023-05-16

抽象类

在Java中被abstract关键字修饰的类称为抽象类,被abstract关键字修饰的方法称为抽象方法。抽象方法只有方法的声明,没有方法体。抽象类无法被实例化。

public abstract class Human {

  //成员变量
  private String name;
  private Integer age;

  //普通方法
   void speak() {
     System.out.println("人类都可以说话");
   }

   //抽象方法
  abstract void eat();
  abstract void run();

  //构造方法
  public Human() {}

  public Human(String name, Integer age) {
    this.name = name;
    this.age = age;
  }
}

抽象类的特点:

1、包含抽象方法的一定是抽象类,但是抽象类不一定包含抽象方法。

2、抽象类中的抽象方法只有方法体,没有实现

3、如果一个子类实现了父类的所有抽象方法,该子类可以不必是抽象类。否则必须是抽象类

接口

Java中接口使用Interface关键字修饰,接口是抽象方法的集合,如果一个类实现了某个接口,就必须实现接口中的所有方法。

public interface read {

  void read();
  void write();
  void sleep();

}

抽象类和接口的区别:

基础语法层面:

1、抽象类可以有普通方法,抽象方法,普通成员变量,还可以对方法进行实现。接口只能有抽象方法的声明,不能实现。

2、抽象类只能继承一个,接口可以实现多个

3、抽象类可以有不同类型的成员变量,而接口只能有静态常量类型的变量,即final和static修饰

设计目的区别:

1、抽象类提供的是一种约束行为,提供一种机制,强制不同的类具有相同的行为。只能约束这个类行为的有无,具体实现不能进行约束。抽象类目的就是达到代码的复用,就是当多个类有相同的行为,可以抽象出来一个父类,将子类的一些共性问题抽象出来。抽象类是对类本质的一个抽象。

2、接口是对行为的一种抽象。接口不关心实现的主体是谁。

当你关注事物的本质的时候,你就用抽象类,如果关注的是一个操作,一个行为的话,就要用接口。

抽象类的功能要远远高于接口,但是我们定义抽象类的代价比较大,因为每一个类只能继承一个类。所以说抽象类必须编写出所有子类的所有共性。接口在功能上会弱化许多,难度会降低。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

面试系列之抽象类和接口的区别 的相关文章

  • 性能测试fangan

    XX 5 0系统 性能测试方案 修订历史记录 1 项目概述 1 1 背景说明 1 2 测试目的 为保证在日常运行及大型活动期间 xff0c 稳定运行 应用快速 xff0c 对进行性能测试 xff0c 验证系统是否能够达到业务所需的性能指标
  • 性能测试fangan

    XX 5 0系统 性能测试方案 修订历史记录 1 项目概述 1 1 背景说明 1 2 测试目的 为保证在日常运行及大型活动期间 xff0c 稳定运行 应用快速 xff0c 对进行性能测试 xff0c 验证系统是否能够达到业务所需的性能指标
  • python函数--range()方法

    range 方法 range 是python内置函数它能返回一系列连续增加的整数 xff0c 它的工作方式类似于分片 xff0c 可以生成一个列表对象 range函数大多数时常出现在for循环中 xff0c 在for循环中可做为索引使用 其
  • 性能测试fangan

    XX 5 0系统 性能测试方案 修订历史记录 1 项目概述 1 1 背景说明 1 2 测试目的 为保证在日常运行及大型活动期间 xff0c 稳定运行 应用快速 xff0c 对进行性能测试 xff0c 验证系统是否能够达到业务所需的性能指标
  • 性能测试fangan

    XX 5 0系统 性能测试方案 修订历史记录 1 项目概述 1 1 背景说明 1 2 测试目的 为保证在日常运行及大型活动期间 xff0c 稳定运行 应用快速 xff0c 对进行性能测试 xff0c 验证系统是否能够达到业务所需的性能指标
  • 性能测试fangan

    XX 5 0系统 性能测试方案 修订历史记录 1 项目概述 1 1 背景说明 1 2 测试目的 为保证在日常运行及大型活动期间 xff0c 稳定运行 应用快速 xff0c 对进行性能测试 xff0c 验证系统是否能够达到业务所需的性能指标
  • linux VNCserver配置

    在Linux操作系统最流行的图形化操作软件是VNC 正如windows下的mstsc远程桌面 xff0c 在大多数 Linux 发行版都带了 VNC Server 的发行包 通过rpm qa grep vnc检查 xff0c 若没有 xff
  • TouchGFX系列 番外篇 Unicode编码

    目录 前言一 什么是Unicode二 Unicode中文编码范围三 GB2312 BIG5 GBK GB18030简介四 Unicode完整编码范围附录最后 前言 TouchGFX为了便于兼容所有的字符 xff0c 采用的是unicode编
  • Python SMTP 发送邮件

    SMTP Simple Mail Transfer Protocol 即简单邮件传输协议 xff0c 它是一组用于由源地址到目的地址传送邮件的规则 xff0c 由它来控制信件的中转方式 Python的smtplib提供了一种很方便的途径发送
  • mkdir() 函数

    查看更多 https www yuque com docs share 99a6e7fa 44c8 4d85 afe2 17a28d117ab0
  • strrev() 函数

    查看更多 https www yuque com docs share 07d175fb 06a5 4efe 99b1 c08caf369ae1
  • 简单的LED恒流电路

    利用三极管 43 MOS管做LED的恒流电路 xff1a 工作原理 xff1a 1 Q1没有导通的情况下 xff0c Q2的B极电压为0V xff0c Q2截止 xff0c Q1的G极由R1施加电压 xff0c Q1导通 xff1b 2 Q
  • 为matlab GUI添加背景图片

    为matlab GUI添加背景图片 为GUI添加一个背景图片 xff0c 不仅可以让我们的界面变得漂亮大气上档次 xff0c 而且软件对与用户的交互更加友好 用C或者C 43 43 写过软件界面的人都知道 xff0c 这件事情可以轻而易举的
  • python函数--isalnum()方法

    isalnum 方法 描述 xff1a 检测字符串是否由字母和数字组成 语法 xff1a str isalnum gt bool 返回值为布尔类型 xff08 True False xff09 str中至少有一个字符且所有字符都是字母或数字
  • docker网络原理,k8s网络原理

    我们知道docker安装完之后 xff0c 每个docker容器里面都有自己单独的网络 xff0c 那么docker的网络是怎么工作的呢 xff1f 首先我们需要了解的是Linux提供了基于NameSpace的隔离机制 xff0c 主要包含
  • SUMO模拟网络时报错:Warning: Environment variable SUMO_HOME is not set, XML validation will fail or use...

    Windows系统 xff0c 在使用SUMO模拟建立模拟网络时 xff0c 输入以下代码 xff0c 用以生成route文件 duarouter n sumotest net xml route files sumotest trips
  • SVN卡在Refresh SVN status cache

    转载请注明出处 xff1a http blog csdn net l1028386804 article details 52305230 装上TortoiseSVN后 xff0c 默认会开机启动一个叫做TSVNCache exe的进程 x
  • LED测试方案及光谱图

  • teamviewer Linux centos7安装使用详细

    1 下载teamview centos版本 xff0c 本人喜欢tar gz版本 xff0c 但是官网只有rpm版本 xff0c 附件中即为官网下载的teamview11 官方下载地址 xff1a https www teamviewer

随机推荐

  • VirtualBox 桥接模式,虚拟机ping不通宿主机

    转载 xff1a https www jianshu com p c5344cfffc20 解决方案 方案一 xff1a 修改防火墙入站规则 打开控制面板 xff0c 找到Windows Defender 防火墙 xff0c 点击高级设置
  • mysql 中建立超级用户 superuser

    我在安装一款软件时要求有mysql 的超级用户和密码 xff0c 我可以root 无密码登录 xff0c 当时给他却不能 xff0c 所以我想建立一个超级用户 查找到学习链接 xff1a https tableplus com blog 2
  • 动手学深度学习——6. FairFace多标签分类

    动手学深度学习 6 FairFace多标签分类 记录一下学习深度学习的一些 本篇简述使用 fairface 训练一个关于人脸的多标签分类器 xff0c 并且使用 pytorch 的 DDP 加速训练 环境 xff1a ubuntu 16 0
  • 动手学深度学习——7. CNN可视化

    动手学深度学习 7 CNN可视化 记录一下学习深度学习的一些 本篇记录一下使用 Grad CAM 可视化 CNN 环境 xff1a Windows 108700K2070Pytorch 1 7 1 深度学习在很多任务上 xff0c 特别是计
  • 动手学深度学习——8. 人物肖像画

    动手学深度学习 8 人物肖像画 记录一下学习深度学习的一些 本篇记录一下使用 U 2 Net paper 生成人物肖像画 xff0c 还有 APDrawingGAN 环境 xff1a Windows 108700K2070Pytorch 1
  • python函数--enumerate()方法

    enumerate 方法 描述 enumerate 函数用于将一个可遍历的数据对象 如列表 元组或字符串 组合为一个索引序列 xff0c 同时列出数据和数据下标 xff0c 一般用在 for 循环当中 Python 2 3 以上版本可用 x
  • [HAL库学习之路]1.点亮LED

    记录自己的STM32的HAL库的学习之路 xff0c 不定期更新 一 创建工程 二 Pinout 三 Clock Configuration 四 Configuration 配置GPIO的模式 速度等等 五 Generate Code Pr
  • [HAL库学习之路]5.IWDG-独立看门狗

    记录自己的STM32的HAL库的学习之路 xff0c 不定期更新 一 Pinout 二 Clock Configuration 三 Configuration 配置GPIO 配置IWDG 四 Generate Code 代码 主函数首先点亮
  • [HAL库学习之路]7.定时器中断

    记录自己的STM32的HAL库的学习之路 xff0c 不定期更新 一 Pinout 二 Clock Configuration 三 Configuration 定时器溢出时间 T o u t 61 a r r 43 1 p s c 43 1
  • [HAL库学习之路]8.PWM输出

    记录自己的STM32的HAL库的学习之路 xff0c 不定期更新 一 Pinout 二 Clock Configuration 三 Configuration 四 Generate Code 代码 span class hljs keywo
  • [HAL库学习之路]9.输入捕获

    记录自己的STM32的HAL库的学习之路 xff0c 不定期更新 一 Pinout 二 Clock Configuration 三 Configuration 四 Generate Code 代码 计数频率为1MHz xff0c 捕获到高电
  • [HAL库学习之路]11.RTC-实时时钟

    记录自己的STM32的HAL库的学习之路 xff0c 不定期更新 一 Pinout 二 Clock Configuration 三 Configuration 四 Generate Code 代码 int span class hljs f
  • 数字电路基础(四) 数据分配器、数据选择器和数值比较器

    数字电路基础 xff08 四 xff09 数据分配器 数据选择器和数值比较器 一 数据分配器 在数据传输的过程中 xff0c 数据选择器可以把某一路的数据分配到不同的数据通道上 xff0c 这种电路称为数据分配器 简称DEMUX xff0c
  • 好心博主祝您解决sql右模糊匹配一个列表的问题

    LambdaQueryWrapper if span class token punctuation span CollectionUtil isNotEmpty span class token punctuation span requ
  • IPV9 : 中国摆脱美国IPV6, 自订互联网标准

    IPV9 中国摆脱美国IPV6 自订互联网标准 根据新华网消息指出 中国于2008 1 23宣布基于十进制技术构建的互联网投入使用 十进制互联网技术形成的IPV9协议 xff0c 是中国在互联网技术上取得的重大自主创新成果 xff0c 为摆
  • K_A18_001 基于STM32等单片机采集MQ2传感参数串口与OLED0.96双显示

    K A18 001 基于STM32等单片机采集MQ2传感参数串口与OLED0 96双显示 一 资源说明二 基本参数参数引脚说明 三 驱动说明IIC地址 采集通道选择 时序对应程序 四 部分代码说明1 接线引脚定义1 1 STC89C52RC
  • Linux命令总结--grep命令

    linux grep命令详解 简介 grep global search regular expression RE and print out the line 全面搜索正则表达式并把行打印出来 是一种强大的文本搜索工具 xff0c 它能
  • OpenStack:01---通过packstack在CentOS7上安装OpenStack(不限版本)

    官方手册步骤太多 xff0c 一着不慎满盘皆输 对于学习体验来说自动化安装的方法较为合适 1 CentOS虚拟机安装 需要注意三点 xff1a 使用mini镜像进行最小化安装配置给够CPU开启虚拟化 下面分别解释 第一条 xff1a cen
  • OpenStack 入门学习之八:OpenStack OVS GRE/VXLAN网络

    文章来自 xff1a http blog sina com cn s blog 9762b74e010135vv html 学习或者使用OpenStack普遍有这样的现象 xff1a 50 的时间花费在了网络部分 xff1b 30 的时间花
  • 面试系列之抽象类和接口的区别

    抽象类 在Java中被abstract关键字修饰的类称为抽象类 xff0c 被abstract关键字修饰的方法称为抽象方法 抽象方法只有方法的声明 xff0c 没有方法体 抽象类无法被实例化 public abstract class Hu