接口和抽象类

Posted wangyuyanhello

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口和抽象类相关的知识,希望对你有一定的参考价值。

1.抽象类与接口的抽象层次是不同的

抽象类是对类抽象,接口是对行为抽象。类包含了属性与行为,所以说接口是更具体的抽象

2、抽象类与接口的设计层次是不同的

抽象类是一种自下而上的设计,先有子类才能提取公同的属性与行为,抽象出父类; 接口是一种自上而下的设计,先规定行为方法,只要可以实现这些行为,就可以成为接口的实现类。

3、抽象类与其派生类的关系和接口与其实现类的关系本质是不同的

抽象类与其派生类是一种 is-a 关系,即父类和派生子类在概念上的本质是相同的(父子关系,血缘联系,很亲密)。 接口与其实现类是一种 like-a 关系,即接口与实现类的关系只是实现了定义的行为,并无本质上的联系(契约关系,很淡漠的利益关系)。

举个例子 比如说一个动物抽象类,定义了跑的方法、叫的方法,但如果一个汽车类可以实现跑、可以实现叫,它就可以继承动物抽象类吗?!这太不合理了,汽车不是动物呀!而如果通过接口定义跑的方法、叫的方法,汽车类作为实现类实现跑和叫,完全OK很合理,就因为没有继承关系的约束。

以上是关于接口和抽象类的主要内容,如果未能解决你的问题,请参考以下文章

接口和抽象类

抽象类和接口的异同?

Dart9(九)抽象类、多态、 接口

java接口与抽象类有啥区别?

接口和抽象类的区别

接口和抽象类