接口和抽象类都是支持抽象类定义的两种机制,接口是公开的,里面不能有私有的方法或者是变量,是让别人去使用的,而抽象类中是可以有私有方法或私有变量的,一个类中若有抽象方法则它必然是抽象类,abstract只能用于修饰方法或者类,不能修饰属性。接口是一个方法的集合,接口中的方法都没有方法体,都是抽象方法,声明的也只能是常量(static final),抽象类的子类为其方法提供具体实现,否则它们也是抽象类.
总结:
相同点:都不能被实例化,接口的实现类或抽象类的子类都只有实现了接口或抽象类中的方法后才能被实例化。
相同点:1、接口只有定义,不能有方法的实现,而抽象类中可以有定于与实现的方法。
2、接口用于实现,抽象类用于继承,一个类可以实现多个接口,然而一个类只能继承一个抽象类,因此接口可以间接的达到多重继承的目的。
3、接口适合用于实现常用的功能,便于日后围护或者添加删除,然而抽象类更倾向于当做公共类角色,不适合日后重新对里面的代码进行修改。