抽象类
抽象类是不可以被实例化的,可以含有静态方法和构造方法。在抽象类中方法可以有具体的实现,也可以是抽象方法
接口
接口不能实例化,不可以包含静态方法和实例方法。接口中的方法都是抽象方法。一个类智能继承一个类,但是可以实现多个方法
使用场景
在知道两个类或多个类有重复的时候,或有公共代码实现的时候,可以考虑使用抽象类,因为使用子类可以继承抽象类的非抽象方法,使代码变得更加简单。
和抽象类比较来说,接口的使用更加灵活,我们只关心对象之间的交互方法,而不关心对象对应的具体类,可以采用接口。或者是我们定义一个接口,但是具体方法还没有实现,可以采用接口。