java 面试常问之一:《接口和抽象类的区别》

有关java的面试中经常被问到接口和抽象类的区别:

1.抽象类中的方法可以有方法体,也就是可以实现具体的方法,但是接口中的方法必须是抽象的,只能声明,不能包含具体实现

2.抽象类中的成员变量可以是任何类型,但是接口的成员变量必须是static,final

3.一个类只能继承一个抽象类,但是一个类可以实现多个接口

4.接口的实现类如果不能实现接口的所有方法,那必须声明为抽象类

5.类只能单继承,但是接口可以多继承

6.接口是隐式抽象的, 所以在声明接口的时候不用加abstract关键字,接口中的方法也是隐式抽象的,不用加abstract关键词

7.可以用接口声明一个变量,为空指针或者绑定到一个实现该接口的类的对象上

8.抽象类不能实例化对象,只有抽象类的非抽象子类可以实例化对象

9.抽象类中不一定包含抽象方法,但是有抽象方法的类必须是抽象类

10.抽象类中的抽象方法只是声明,不包含方法体,

11.构造方法,类方法(用static修饰的方法)不能声明为抽象方法

12.抽象类的子类必须给出抽象类的抽象方法的具体实现,否则该子类必须声明为抽象类

原文地址:https://www.cnblogs.com/zhaijing/p/7226500.html