今天遇到的一个面试题,接口和抽象类的区别是什么?
我的回答:我的回答就不发了,说不出口。
回来查了一下,答案如下:
相同点:
1、都可以定义属性和方法
2、都是特殊的类,都需要子类来操作具体的逻辑
3、都没有抽象方法
4、都不能创建对象
5、都可以利用多态操作数据
6、子类必须实现里面的抽象方法
7、java1.8以后,都可以拥有带方法体的方法
不同点:
1、接口可以被子类对实现,但是抽象类由于java本身的特性只能单继承;
2、抽象类的方法,可以用protect修饰,接口只能是public
3、抽象类可以拥有自己的构造,接口不能拥有
4、接口之间可以被多继承,抽象类只能单继承
5、java1.8以后接口可以拥有default修饰的方法体,还有stastic静态方法体,抽象类没有
总结:
抽象类和接口两者都不能被实例化,接口就是抽象类的一种特殊情况。