博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
抽象类和接口异同点
阅读量:4607 次
发布时间:2019-06-09

本文共 668 字,大约阅读时间需要 2 分钟。

 

《大话设计模式》P.357

 

从表象来说:

1、抽象类可以给出一些成员(非抽象成员)的实现,接口却不包含成员的实现(没有方法体);

2、抽象类的抽象成员可被子类部分实现,接口的成员需要实现类完全实现;

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

 

区分抽象类和接口的三点:

1、类是对对象的抽象;抽象类是对的抽象;接口是对行为的抽象。

2、如果行为跨越不同类的对象,可使用接口;对于一些相似的类对象,用继承抽象类。

3、从设计角度讲,抽象类是从子类中发现了公共的东西,泛化初父类,然后子类继承父类;而接口是根本不知子类的存在,方法实现还不确认,预先定义。

 

抽象类是自底而上抽象出来的,而接口则是自顶向下设计出来的。

 

C# 入门经典》P.182

 

类似之处:

1、抽象类和接口都包含可以由派生类继承的成员;

2、抽象类和接口都不能直接实例化,但可以声明它们的变量。

 

不同之处: 

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

2、抽象类可以有抽象成员(没有代码体,且必须在派生类中实现,否则派生类本身也是抽象的)和非抽象成员(它们拥有代码体,也可以是虚拟的,这样就可以在派生类中重写);

3、接口成员必须都在使用接口的类上实现——它们没有代码体;

4、接口成员是公共的,但抽象类的成员可以是私有的(只要它们不是抽象的)、受保护的、内部的或受保护的内部成员;

5、接口不能包含字段、构造函数、析构函数、静态成员或常量。

转载于:https://www.cnblogs.com/scorpio-qian/p/3355498.html

你可能感兴趣的文章
Jackson
查看>>
Android性能测试工具APT使用指南
查看>>
OpenStack环境中的NFV实践
查看>>
华为交换机 查看 ip和mac对应关系
查看>>
linux中软件安装方式
查看>>
闭包closure
查看>>
ReactNative---卡顿问题及性能优化
查看>>
腾讯招聘信息爬取
查看>>
node配置微信小程序解密消息以及推送消息
查看>>
移动架构-简单工厂模式
查看>>
iMX6Q开发板的EIM接口的配置可以与FPGA通讯-交换数据-最常用的接口配置
查看>>
转载:PHP的session过期设置
查看>>
C++ 移位运算与进制转换 浅析
查看>>
UVA439 knightMoves (A*启发搜索)
查看>>
Spring4.x Jpa + hibernate的配置(废弃JpaTemplate)
查看>>
spring mybatis sqlSession WARN错误
查看>>
Android Studio 引入Lambda表达式
查看>>
关于Relay的麻烦之处
查看>>
JS面向对象编程之:封装、继承、多态
查看>>
Python-PyQt安装
查看>>