街题系列 - 接口和抽象类的区别
面试的时候,竟然几次都被问到这个问题,虽然我也大概知道他们两个的区别,可是还是得全面总结一下。
不同点:
- 抽象类使用 abstract 关键字修饰;接口使用 interface 修饰。
- 抽象类中有构造方法(不写会有隐式构造方法),但不能实例化;接口没有构造方法。
- 抽象类中可以有非抽象方法,接口中一般只有抽象方法。
- 抽象类中可以有变量;接口中只能是常量
- 抽象类只能单继承类;接口可以继承多个接口
- 实现类只能继承一个抽象类;但可以实现多个接口
相同点:
- 都可以被继承
- 都不能被实例化
- 都可以包含方法声明
- 派生类必须实现未实现的方法
搬运地址:
既已览卷至此,何不品评一二: