抽象类和接口

重点:执行同一套逻辑但是调用的是不同方法就用抽象类或者接口,大多数时候用抽象类更加合适!
抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。

人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.

所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。
接口更多的是在系统架构设计方法发挥作用,主要用于定义模块之间的通信契约。
而抽象类在代码实现方面发挥作用,可以实现代码的重用。
模板方法设计模式是抽象类的一个典型应用。

抽象类和接口
相同点:
(1) 都可以被继承
(2) 都不能被实例化
(3) 都可以包含方法声明
(4) 派生类必须实现未实现的方法
区 别:
(1) 抽象基类可以定义字段、属性、方法实现。接口只能定义属性、索引器、事件、和方法声明,不能包含字段。
(2) 抽象类是一个不完整的类,需要进一步细化,而接口是一个行为规范。微软的自定义接口总是后带able字段,证明其是表述一类“我能做。。。”
(3) 接口可以被多重实现,抽象类只能被单一继承
(4) 抽象类更多的是定义在一系列紧密相关的类间,而接口大多数是关系疏松但都实现某一功能的类中
(5) 抽象类是从一系列相关对象中抽象出来的概念, 因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定, 因此反映的是事物的外部特性
(6) 接口基本上不具备继承的任何具体特点,它仅仅承诺了能够调用的方法
(7) 接口可以用于支持回调,而继承并不具备这个特点
(8) 抽象类实现的具体方法默认为虚的,但实现接口的类中的接口方法却默认为非虚的,当然您也可以声明为虚的
(9) 如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 先来看看抽象类和接口的定义: 抽象类(abstract class): 使用abstract修饰符修饰的类。官方点...
    IT废柴阅读 53,960评论 7 45
  • 1. 抽象类 什么是抽象类 包含一个抽象方法的类就是抽象类 抽象方法 声明而未被实现的方法,抽象方法必须使用abs...
    FantJ阅读 1,403评论 0 5
  • 1)抽象类与接口的问题,面了好几个公司,都会被问到,其实这也是开发过程中经常遇到的问题,在这里所说的接口是指jdk...
    Hughman阅读 1,269评论 0 2
  • 愚蠢的女孩 我把你爱上 你却看不透我的伎俩 那是一首五分钟的情诗 和一只五毛的铅笔 我开始成为混蛋的那天 是我十八...
    我没尴尬过阅读 170评论 0 0
  • 01 我认识一个女孩,她梦想中的职业是当记者——专门听别人说话,写别人的故事。但由于父母百般劝说,记者这个行当不稳...
    f5c8375254c2阅读 238评论 0 1