抽象类与接口的区别

这道题可以说是面试中的常客了,除当前这个问题外,还有可能会问这两者应用场景的区别,这里特此记录一下。
抽象类为子类生成了一个通用模板,当你希望子类中的方法有默认实现,便可以使用抽象类
而接口则是抽象方法的集合,如果一个类实现了某个接口,就必须给出接口中的所有方法实现。
关于二者的不同,我觉得网上有张图很不错:
抽象类与接口的区别
关于这二者的使用场景问题:
1.第一点应该想到接口与类的使用场景区别,当需要多重继承的时候,可以通过实现多个接口去实现
2.当你需要一些方法有默认实现,可以使用抽象类
3.当基本功能不断改变时,可以使用抽象类。因为这种情况下使用接口,需要修改所有实现了该接口的类