接口和抽象类的区别(面试回答)
抽象类可以有具体方法实现,而接口在Java8之前不能有方法实现(Java8之后可以有默认方法和静态方法)
抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final 类型的;
接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
一个类只能继承 extends 一个抽象类,而一个类却可以实现 implements 多个接口。
抽象类是对类的抽象,强调的是"is-a"关系(是什么:如"猫是一种动物");接口是对行为的抽象,强调的是"like-a"关系(能什么:如"手机能拍照、能打电话")。
抽象类可以有构造方法,接口不能有。
最简回答:接口是一种规范,它定义了一组方法的签名,而不包含具体实现。一个类可以实现多个接口。抽象类是一种可以包含具体方法和抽象方法的类,它可以被继承,但不能被实例化。一个类只能继承一个抽象类。简而言之,接口关注的是行为的规范,而抽象类关注的是共享的功能。