抽象类与接口(Java)

2023-11-10

二者的特性

  • 方法类型:接口只能有抽象方法。抽象类可以有抽象方法和非抽象方法。从Java 8 开始,抽象类可以有默认(default)方法和静态方法。
  • Final变量:接口中的变量默认是final的。抽象类可能包含非final的变量。
  • 变量类型:抽象类可以有final、非final、静态、非静态类型的变量。接口只能有静态类型的变量和final类型的变量。
  • 实现: 抽象类可以实现接口,接口不能实现抽象类。
  • 关键字:一个是implement,一个是extend。
  • 多实现:接口只能extend另一个接口。抽象类既可以implement,又可以extend。
  • 数据成员访问性:接口的数据成员是public的。抽象类可以有public private protected等等。

如何选择

应该用抽象类的场景通常包含以下特点:

  • 想要在相关的的类之间共享一些代码
  • 希望实现抽象类的子类们有大量相同的属性
  • 希望声明非静态的或者非final的属性。这类属性通常是一个对象的,可能被修改的状态。

应该用接口的场景通常包含以下特点:

  • 希望不相干的类去实现一些相同的方法(比如各种各样的类都想实现序列化方法)
  • 你想利用多继承特性
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

抽象类与接口(Java) 的相关文章

随机推荐

  • leecode344反转字符串(附有调试代码)

    package heima study day3 import java util Scanner public class 反转字符串344 public static void main String args Scanner inpu
  • 为什么要使用ConstraintLayout?

    本文为博主原创文章 转载请注明出处 http blog csdn net jingsummer article details 78615360 源码地址 ConstraintLayoutDemo 相信大家对ConstraintLayout
  • Java 设计模式(十二):享元模式

    享元模式 GitHub 地址 https github com yifanzheng java design patterns 享元模式 Flyweight Design Pattern 顾名思义就是共享单元 享元模式的意图是复用对象 节省
  • STM32的独立看门狗

    独立看门狗时钟频率一般以40KHz 但不是非常准确 变化范围在15 47KHz 看门狗在开启后不能关闭 除非复位 1 寄存器 关键字寄存器 IWDG KR 用来写指令 指令有0xAAAA 把IWDG RLR的值载入到计数器 避免 产生复位
  • [BAPI]外向交货单按批次拆分[BAPI_OUTB_DELIVERY_CHANGE]

    下面介绍SAP SD的销售订单外向交货单按批次拆分 Batch Managed 包括前台操作和调用bapi BAPI OUTB DELIVERY CHANGE 实现 1 前台操作 按批次拆分操作 外向交货单Tcode VL02n amp l
  • Java final 详解

    一 final 基础使用 1 1 修饰类 当某个类的整体定义为 final 时 就表明了你不能打算继承该类 而且也不允许别人这么做 即这个类是不能有子类的 注意 final 类中的所有方法都隐式为 final 因为无法覆盖他们 所以在 fi
  • 泛型中K TVE? Object等分别代表什么含义。

    E一Element 在集合中使用 因为集合中存放的是元素 T Type Java类 K Key 键 V Value 值 N Number 数值类型 表示不确定的java类型 无限制通配符类型 S U V 2nd 3rd 4th types
  • ArcGIS API 4.x for Js 点击地图获取经纬度

    需求 鼠标点击地图后获取当前的经纬度 效果 需添加API esri geometry support webMercatorUtils 代码 view on click function e geom webMercatorUtils xy
  • 规范的建表语句

    CREATE TABLE student info id INT NOT NULL AUTO INCREMENT COMMENT 主键 stu name VARCHAR 10 NOT NULL DEFAULT COMMENT 姓名 stu
  • Python基础语法入门(第十五天)——装饰器传参与匿名函数

    在上篇文章中留下了一个问题 装饰器的传参如何实现 其实对于这个问题来说 首先要搞清楚传参的顺序是什么 我们已知的是装饰器的本质就是函数 那么在这嵌套了多层的函数中每一个函数接收的参数是哪一个 作用域哪个范围 这就是实现装饰器传参前需要解决的
  • IDEA+Maven创建javaweb项目out.print()报错

    IDEA Maven创建javaweb项目out print 报错 从原型中创建如图所示 注意不要选错 选好项目目录设置好项目名称之后下一步 注意这个地方的Maven路径 用户设置文件 本地仓库要选择自己的 不要使用IDEA自带的MAven
  • Sqlite3简介

    SQLite3 简介 SQLite3 是一种轻量级的嵌入式数据库引擎 被广泛应用于各种应用程序中 包括移动设备 桌面应用程序和嵌入式系统 它以其简单 高效和零配置的特点而受到开发者的喜爱 以下是 SQLite3 的一些重要特点 嵌入式数据库
  • Android手机9008模式刷机教程(以小米手机为例)

    机型 红米1s电信版2013028 故障 一开始可以进入fastboot 后来无法进入fastboot 无限重启 后来开机键无反应 大家都知道 刷机的方式有很多种 大体来讲 我们刷机一般采用以下几种方式 1 卡刷 即进入recovery模式
  • 理解golang调度

    线程模型 在细说 Go 的调度模型之前 先来说说一般意义的线程模型 线程模型一般分三种 由用户级线程和 OS 线程的不同对应关系决定的 N 1 即全部用户线程都映射到一个OS线程上 上下文切换成本最低 但无法利用多核资源 1 1 一个用户线
  • 真香!Jenkins 主从模式解决问题So Easy~

    01 Jenkins 能干什么 Jenkins 是一个开源软件项目 是基于 Java 开发的一种持续集成工具 用于监控持续重复的工作 旨在提供一个开放易用的软件平台 使软件项目可以进行持续集成 中文官网 https jenkins io z
  • 二级教程python语言程序设计答案_全国计算机等级考试二级教程-Python语言程序设计(2018年版)编程题-参考答案......

    习题3 基本数据类型 1 获得用户输入的一个整数 输出该整数百位及以上的数字 i input 请输入一个整数 print i 2 复制代码 2 获得用户输入的一个字符串 将字符串按照空格分割 然后逐行打印出来 i input 请输入一个带空
  • unbuntn X64 安装vsftpd

    Fortunately the good folks at The Fronteer Group have backported vsftp until the full release of ver 3 of vsftp comes ou
  • 【限时免费】20天拿下华为OD笔试之【栈】2023B-仿 LISP 运算【欧弟算法】全网注释最详细分类最全的华为OD真题题解

    栈 2023B 仿 LISP 运算 题目描述与示例 题目描述 LISP 语言唯一的语法就是括号要配对 形如 OP P1 P2 括号内元素由单个空格分割 其中第一个元素 OP 为操作符 后续元素均为其参数 参数个数取决于操作符类型 注意 参数
  • JavaScript slice() 和 splice()

    slice slice 从已有的数组中返回选定的元素 返回一个新的数组 包含从 start 到 end 不包括该元素 的 arrayObject 中的元素 arrayObject slice start end 参数 start 必须 规定
  • 抽象类与接口(Java)

    二者的特性 方法类型 接口只能有抽象方法 抽象类可以有抽象方法和非抽象方法 从Java 8 开始 抽象类可以有默认 default 方法和静态方法 Final变量 接口中的变量默认是final的 抽象类可能包含非final的变量 变量类型