1,语法区别:

  1. 接口中通常只能定义常量和抽象方法;但是在新版JDK版本(JDK8后),在接口中还能定义默认方法,静态方法,私有方法;
  2. 抽象类除了可以定义抽象方法外,其他的和普通类的结构无区别;
  3. 接口可以多继承,但是抽象类只能被类单继承;(接口多继承,类单继承);

image.png

2,使用区别:

接口时被实现的。用implements关键字;抽象类是一般是被子类继承的;
一个类只能继承一个抽象类,但一个类可以实现多个接口;

3,思想区别:

将子类必须具有的行为,属性放到抽象类中,而部分子类具有的行为则放到接口中;
这两者的存在使得代码变得更灵活,更规范;
image.png