实现方式不同:接口是用关键字interface定义的,抽象类是用关键字abstract定义的。
继承方式不同:类可以实现多个接口,但只能继承一个抽象类。
成员变量不同:接口中只能声明常量,不能声明实例变量;抽象类可以包含实例变量。
方法实现不同:接口中的方法都是隐式抽象的,只能声明而不能实现;抽象类中的方法可以有实现和不实现的。
构造器不同:接口没有构造器;抽象类可以有构造器。
默认方法不同:接口中可以定义默认方法,默认方法可以被实现类继承或覆盖;抽象类中不能定义默认方法。
调用方式不同:接口中的方法必须通过实现类的实例来调用;抽象类中的方法可以通过实例调用,也可以通过类名调用。
总的来说,接口主要用于定义行为规范,实现类需要实现接口中的所有方法;抽象类主要用于被继承,提供一些通用的实现代码,并可以包含具体方法。