小论接口(interface)和抽象类(abstract class)的区别
接口是类实现了某一种功能的体现,这种体现往往是对外的,所以重载接口的函数一定是public的
可是初学OO编程的时候,往往会碰到一个问题,既然有接口(interface)的存在,为什么还要有抽象类(abstract class)呢?
抽象类有点像接口和类的结合体,其中既可以仅仅包含函数的声明,又可以有函数的实现。其实在具体的编程环境中,类中往往有一个固定的算法或者一个固定的工作流(workflow),比如有一个类表示吃饭,那么其固定的工作流为 获取餐具->获取食物->吃,体现这一工作流的函数是确定的,可以直接在抽象类中予以实现,而具体的步骤 比如 获取餐具是拿了筷子还是用了刀叉则在抽象类中可以仅仅是一个声明,具体由子类来实现. 此外吃饭这个类可以实现了一个接口叫 吃饱 ,而实现 吃饱 这个接口的不仅仅有吃饭类,还有比如吃零食 等类
所以总结一下,接口是方便类的调用,而抽象类则是用于规范类当中特定的工作流或算法的。
转载于:https://www.cnblogs.com/rav009/archive/2012/11/29/5131186.html
小论接口(interface)和抽象类(abstract class)的区别相关推荐
- 接口Interface和抽象类abstract class的区别
abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力. abstract class和inte ...
- C#中接口(Interface)与抽象类(abstract)的区别
前言:在我学习接口(interface)与抽象类(abstract)时,我发现它们有一些相似之处也有一些不同,本博文来详细说说它们二者之间的区别: 文章目录: 一.不同之处: 1.声明上: 2.成员上 ...
- php 类 接口的区别吗,PHP的接口类(interface)和抽象类(abstract)的区别
/** * 接口类:interface * 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类, * 那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候 ...
- java 抽象接口类,Java接口(interface)和Java抽象类(abstract class)的区别(详诉版)
1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架, 当代表业务逻辑的高层抽象层结构合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...
- JAVA的abstract修饰符 接口interface用法 抽象类和interface的差别
转自:http://blog.csdn.net/zhandoushi1982/article/details/8458081 abstract修饰符可以修饰类和方法. (1)abstract修饰类,会 ...
- 接口(interface)和抽象(abstract)类的区别
2019独角兽企业重金招聘Python工程师标准>>> 接口与抽象类的区别: 1 两者表达的概念不一样.抽象类是一类事物的高度聚合,与子类的关系属于"是"的关系: ...
- C#的static,interface,virtual,abstract,override的区别用法
C# 是面向对象的程序设计语言,每一个函数都属于一个类. Static:当一个方法被声明为Static时,这个方法是一个静态方法,编译器会在编译时保留这个方法的实现.也就是说,这个方法属于类,但是不属 ...
- 路由器上的usb接口有什么用_电脑上这个“小雷电”接口,与其他USB有什么区别?...
关注求真实验室 每天学习小知识 求真君相信大家对雷电接口这个概念都略有耳闻,它的英文名字为 Thunderbolt,是一种硬件接口标准.作为一种连接标准,雷电 3 接口具体形态都是 Type-C 的模 ...
- Java接口和Java抽象类(转,原文已被删除)
1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架,当代表业务逻辑的高层抽象层结构 合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...
最新文章
- 根据文字计算Label的尺寸
- RuoYi(分离版) 使用代码生成器添加子模块(idea版)
- html不换行溢出省略号代替,css控制不溢出,不换行,溢出部分省略号显示
- shift键的十一个妙用
- Chapter 7 Windows下pycaffe的使用之draw_net.py
- 你写的代码扩展性高吗?快试试用Spring注入方式来解耦代码!
- 【机房收费系统】---结账
- 斯坦福DAWNBench最新训练排名!华为云ModelArts用时10分28秒获全球最快
- goeasy java_Java GoEasy 实现服务端推送和Web端推送
- 80386汇编_全局描述表GDT介绍
- Robotframework基础篇(一):使用ride编辑器
- JQuery——相关练习
- 三菱FX系列PLC的modbusTCP以太网通讯
- Qt多线程http下载器之一:仿百度网盘的http下载器
- exdoll机器人_打造国内领先的定制化人工智能机器人品牌, EXDOLL新品惊艳亮相_TOM新闻...
- 通过文献计量学助您发表高影响因子论文—基于Citespace和vosviewer文献计量学可视化SCI论文高效写作方法
- android 是否可触摸,android 2.0可能支持多点触摸?
- iOS—网络实用技术OC篇网络爬虫-使用java语言抓取网络数据
- 结对编程分析——中小学数学卷子自动生成程序
- nginx部署前端项目的详细步骤
热门文章
- MySQL max_allowed_packet设置及问题
- javascript继承机制
- [转]expect的安装
- 5分钟在超能云(SuperVessel)上免费创建属于自己的大数据环境
- ExtJS4.2学习(10)分组表格控件--GroupingGrid
- Open XML应用安全(2)OLE机制
- nginx在linux为何效率高
- 'SVN更新' has encountered a problem :An internal error occurred during: svn错误
- Android 编译系统分析(一)
- 数据结构—二叉树BinaryTree