
猪队友: 你会说中文吗?
访者: 接口与抽象类之间的异同是什么?
猪队友:
相似之处:
1,都无法实例化.
2. 接口的实现类和抽象类的子类只有在实现接口或抽象类中的所有方法之后才能实例化.
不同点:

1. 接口只能定义抽象方法,而不能定义方法. 抽象类可以定义抽象方法和方法.
2. 单继承,多实现. 该接口可以实现多个,只能继承一个抽象类.
3. 接口强调功能,抽象类强调所有权.
4. 接口中的所有成员变量都是public static final. 静态无法修改. 当然抽象类实现接口,必须将其初始化. 接口中的所有方法都是公共抽象. 而且没有任何构建方法. 抽象类更自由,类似于普通类. 可以有抽象方法,也可以没有,普通方法也可以.
采访者: 就是这样抽象类实现接口,那么您知道为什么需要创建接口和抽象类吗?
猪队友: ·······

要回答这个问题,我们必须首先了解什么是抽象类?

官方:
抽象类通常用于表征从问题域的分析和设计派生的抽象概念. 它们是一系列具体概念的抽象,这些概念看起来不同,但本质上是相同的.
这个官方解释也很抽象,三重奏
说人:
例如,我们熟悉Teddy,Haba,Erha,阿拉斯加,秋田等. 在大小和形状上存在很大差异. 我们如何抽象它们?也就是说,它们都具有基本相同的东西. 也就是说,它们都是狗. 狗的耳朵,尾巴,四肢等. 我们将它们抽象出来. 至于耳朵,尾巴长或短,颜色是,这需要子类来实现dog的抽象方法.
这是我们先前的面向对象的抽象的基本功能.
这个抽象类的作用是什么?
1. 用于隐藏

要隐藏类型,我们可以构造一组行为的固定抽象描述,一个行为可以具有任何可能的特定实现. 此抽象描述是一个抽象类. (参考多态性)
2. 用于扩展对象的行为功能
该组的任何可能的具体实现都由所有可能的子类表示. 该模块可以操作一个抽象类. 由于模块依赖于固定的抽象类,因此不允许对其进行修改. 同时,它是通过抽象类派生的,以扩展此模块的行为功能. (请参考开闭原则)
接下来看一下界面
官方:
接口是指一个实体向外界提供的抽象(可以是另一个实体),用于将外部通信方法与内部操作分开,以便可以在内部进行修改而不影响其他外部实体及其交互方式.
说人:
接口是一个特殊的抽象类,但是它比抽象类更抽象

那么界面的目的是什么?
1. Java单一继承的原因要求曲线保存国家以作为继承关系的补充.
2. 该合同用于固化程序模块以减少耦合. 分解几个职能并执行并依赖合同. (取决于反演原理)
3. 定义接口有利于代码规范. (界面分离的原理)
了解这三个特征和五个原理并理解它们,实际上,您将有更深刻的理解.
最后:
抽象类代表关系,接口代表相似关系.
抽象类强调从属关系,而接口则强调功能.
提供一张藏宝图〜

参考:
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-216365-1.html
应该重质不重量
世界格局由美国一超独霸转向多极并起并存的时代——更是中华盛世主导世界时代的到来