1,格式问题接口中的抽象方法是固定的:|-- 成员变量 public static final 数据类型 变量名 = 值 |-- 成员方法 public abstract 返回值类型 方法名();而抽象类中的抽象方法是不固定的.2,主体内容抽象类中一般定义的是继承体系中的共性内容(因为是单继承,把共性内容定义到抽象类中,一次继承就完事)而接口中一般定义的是体系中的扩展内容(比如说,都是人,会学习,学什么不知道,所以是抽象的,而学习这个功能时共性的,所以可以把这个功能放到抽象类中.而人不是每一个都抽烟的,所以可以把这个抽烟的功能放到接口中,所以烟民可以继承学习方法,实现抽烟方法而非烟民直接继承学习方法即可.而且,不只会有抽烟,还会有开车,唱歌等等扩展的功能.用接口可以多实现,提高了扩展性!3接口中只能有抽象内容,子类使用,必须覆盖而抽象类中,可以有非抽象的方法,可以直接被子类调用.