抽象类和接口都是用于定义对象的契约,但它们之间有几个关键区别:1、抽象类可以包含实例变量(数据成员),而接口不能。2、抽象类可以有构造函数,接口必须是抽象的。3、抽象类可以有实现的方法(具体方法),而接口中的所有方法都必须是抽象的。4、一个类可以实现多个接口,但只能继承一个抽象类。5、Java不支持多继承,但一个类可以实现多个接口,从而实现多重继承的效果。