接口和抽象类的区别

1.设计层面的区别:

1)接口,它是一个规范、法规,你必须按照我的接口来做、来写才能调用我的方法、功能;

接口是自上向下的方式,接口只管定义规范,而子类实现的时候,或者其它类调用的时候必须遵循我的标准

2)抽象类

是把某些类的一些特性,把他们的公共特征抽取出来之后变成了一个抽象类,如下图所示

抽象类是自下向上的

 故最根本的区别是:接口是自上向下的方式,抽象类是自下向上的。抽象方法只能申明,不能实现,接口是设计的结果 ,抽象类是重构的结果

2.语法上的区别:

1)抽象类可以提供成员方法的实现细节,而接口中只能存在抽象方法。
2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是编译时常量。
3)接口中不能包含静态代码块,而抽象类可以有静态代码块。
4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
5)接口中不能有构造方法,但是抽象类中,可以有构造方法。
6)接口中可以定义默认方法并实现,但是抽象类中没有默认方法。
7)接口是可以多继承,但是抽象类只能单继承。

 

posted @ 2024-01-29 22:58  初仰  阅读(22)  评论(0编辑  收藏  举报