IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Java面向对象:抽象类和接口的区别 -> 正文阅读

[Java知识库]Java面向对象:抽象类和接口的区别

区别

  • 成员区别:

    抽象类包含:变量、常量;有构造方法、抽象方法、非抽象方法

    接口包含:常量;抽象方法

  • 关系区别:

    类与类:继承(单继承)

    类与接口:实现(可以单实现,也可以多实现)

    接口与接口:继承(单继承、多继承)

  • 设计理念区别:

    抽象类:对类抽象,包括属性、行为

    接口:对行为抽象,主要是行为

设计理念区别举例

门和警报的例子

门都有open和close两个动作,我们可以分别使用抽象类和接口来定义这个抽象概念:

image-20210809230126630

image-20210809230145069

随着时代的发展,门出现了报警的功能,我们可以使用抽象类和接口来分别实现这个功能:

image-20210809230357819

如果将三个功能都放在一个抽象类里面,那么所有继承这个抽象类的子类都将具备这三个功能,但是有的门可能不具备报警功能,所以这种设计不好。

image-20210809230636767

如果将三个功能都放在接口里面,那么这个接口所有的实现类都必须实现open和close的功能,但是有的门可能不具备open或close功能(例如火灾报警器),所以这种设计也不好。

那么我们该如何设计呢?

首先open和close是门应该具有的动作,而报警功能是额外的、附加的一种行为,所以最佳的设计方案为:将open和close放入抽象类中,将报警功能单独设置一个接口中:

最后,再次强调,抽象类是对事物的抽象,而接口是对行为的抽象。


重要声明:本篇文章整理自黑马程序员全套Java教程

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-08-10 13:17:12  更:2021-08-10 13:19:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 5:06:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码