接口和抽象类

198 阅读1分钟

相同点

1.本身都不能被实例化。  
2.它们的实现类或子类必须实现了它们全部的抽象方法后才能被实例化。

区别

1.概念不同:  
    抽象类是对本质的抽象,而接口是对行为的抽象。  
    抽象类表示的是这个对象是什么,而接口则表示这个对象能做什么。
    所以,在高级语言上,一个类只能继承一个类(抽象类)(正如人不可能同时是生物和非生物),但是可以实现多个接口(吃饭接口、走路接口)。
    
2.使用不同:
    a.接口只能定义抽象方法不能实现方法,抽象类既可以定义抽象方法,也可以实现方法。
    b.抽象类主要用来抽象类别,接口主要用来抽象功能
    c.接口中的所有成员变量 为public static final,静态不可修改,当然必须初始化。
    接口中的所有方法都是public abstract公开抽象的,而且不能有构造方法。
    抽象类就比较自由了,和普通的类差不多,可以有抽象方法也可以没有,可以有正常的方法,也可以没有。
    (抽象类和普通类最大的区别就是它强制不能实例化且子类必须实现它的所有方法)

参考:Java 抽象类和普通类、接口的区别——看完你就顿悟了